C语言中的值传递和址传递.

2024-12-19 05:35:23
推荐回答(3个)
回答1:

都是值传递,真正的引用传递是出现在C#中,当你传指针的时候,实际上你传的是指针所指向的地址值,也就是把地址值传过去,但是这个地址值也是通过值传递过去的,即函数内的指针指向的地址值是原来的地址值的一个拷贝,但是由于地址值相同,所以你在函数内对该指针进行解指针并进行修改,你也修改了外部的那个指针的值(注意,修改的不是地址值)
*p = 30;
那么主函数内的值也变成了30,因为是对同一个地址存放的数据进行了操作

回答2:

void func01(unsigned int Val); //是传值方式
void func02(unsigned int *pV); //是传址方式

---------------------------------------------

unsigned int X;
unsigned int *p;
X=10;
p = &X;

//应用1
func01(X);
func02(&X);

//应用2
func01(*p);
func02(p);

回答3:

三楼正解