您好、欢迎来到现金彩票网!
当前位置:2019跑狗图高清彩图 > 形参 >

指针的形参为什么影响不了实参

发布时间:2019-07-25 05:51 来源:未知 编辑:admin

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  形参变量和实参变量共用传递过去的地埴值,这个共用的地址值是指针变量类型的,它指向同样的内容,这里指4,3.

  形参不带星号的任何运算,改变的只是形参指针的地址和指向,而实参的地址和指向从始至终都没有改变过,所以在main中输出时,它们没有变化。

  在C中,所有的形参在接受实参时都是拷贝,即是”值“传递,所以在函数中对”值“所做的任何操作都不会影响原来的变量。有人认为指针传递能“影响原来的值”,这不仅是误会,而且大错特错——其实在被调函数中对指针的任何操作都不会影响原来的指针值,只有对“指针指向的内容”操作,才会永久改变指针所指向的变量值。具体地说,如果形参指针p是由原调函数里的指针a拷贝过来的,那么函数对p的任何操作都不会影响a,而只有对*p(指针p指向的内容)的操作,才会影响到a指向的内容*a。这一点好多初学朋友并没有真正搞清楚。

  你原来的程序只是把实参传递给了形参,但是函数作用的结果没有通过形参返还给实参,所是说结果是4,3,当加上引用符号之后,实参才会随着形参的改变而改变。

  例如m=4,在内存里m的地址为 0x8000,0x8000这个地址的内存存储了4这个数字。

  int *pm= 这句话会分配一个地址给pm,例如地址为 0x3000,并在这个地址的内存存储(0x8000)这个数,即造成了pm指向m。

  平常使用指针时,*pm,意味着去取pm指向的地址的值(pm指向0x8000,0x8000上存了数字4)

  你的函数只是把pm的值,也即是0x8000传入,函数结果也不会把pm本身(即0x3000)的内容更改。

http://7milediver.com/xingcan/441.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有