1.48、一个函数f(int a,int b),其中a和b的地址关系是什么?

形参ab在函数栈帧中各自占有独立的内存空间,它们的地址是不同的,且与调用函数时实参变量的地址无关。

当函数被调用时,实参的值被复制到形参对应的内存中,形参ab是实参值的副本。函数内部对ab的修改不会影响实参的值。

形参ab的地址是函数栈帧中连续或相邻的(具体取决于编译器的栈布局),但它们的地址不会与实参的地址相同。

简而言之,f(int a, int b)ab是两个独立的局部变量,地址不同,且与实参地址无关,属于值传递机制的典型表现。

如果想让函数参数的地址与实参地址一致(即操作实参本身),应使用指针传递(如f(int* a, int* b))或引用传递(如f(int& a, int& b)),这两种方式传递的是实参变量的地址或别名,函数内对参数的修改会反映到实参上。
本文首发于【讳疾忌医-note】公众号,未经授权,不得转载。
(加入我的知识星球,免费获取账号,解锁所有文章。)

阅读剩余
THE END