C语言中,函数调用时,若是传地址,行参与实参分配在同一地址吗

来源:百度知道 编辑:UC知道 时间:2024/05/25 14:03:20

通俗一点,C语言中,函数调用的时候,如果有参数,则无论参数是什么,都要为参数申请新的空间。
如:
int fun(int* p);
,它被调用的时候,新申请一个指针 p 。即使你调用的时候这样:
int a = 5; fun(&a);
它也会新申请一个指针变量 p 来存放 a 的地址,直到函数返回,该指针 p 的空间才会被释放。
说白了,指针也是变量,只不过它的值是地址,而已!

是地址调用的话,系统不另分配内存的。
传递的是指针和地址。。
你所说的行参和实参分配在同一地址??
感觉你理解就有点错误哦。应该分配的是内存,我们在C语言里都是描写内存分配情况的。
内存以单元来记算。

如果传的值为地址的话,那么函数对地址进行操作,修改的就是实参的值不会有给形参分配地址,所以是同一地址

更准确的理解是函数创建一个指向同一地址的指针,从而实现对实参和行参的同步操作。

不是的

1、实参在定义时就开辟存储单元,这个存储单元地址在整个程序中是固定不变的;
2、只有在函数调用时才给形参开辟存储空间,如果是值传递,则将实参的值赋给形参,如果是地址传递,则为形参开辟一个临时指针变量,然后把实参的地址传送给形参
3、函数执行完毕返回主程序时,释放形参所占的存储单元。

多看看书吧,上面讲的挺详细的。