就是C语言狸猫换太子问题,那为什么第二次就是狸猫了,第一次是太子,我还是不懂
发布网友
发布时间:2022-05-29 07:54
我来回答
共1个回答
热心网友
时间:2023-10-11 20:18
我个人建议你不要看这类的课件。以我的观点,写这种东西的人都是故弄玄虚,花里胡哨的把听课的人搞晕,搞得好像多高深似的。
其实这就是一个传值与传地址的区别的知识点。
传值的函数,在调用该函数时,复制了变量的一份拷贝,所以在函数体内部如何修改该变量,都不影响原数据。
void fun (int v) {
v = 6; //传值,变量值的变量不影响原变量值
}
void fun2(int *v) {
*v = 6; //int *v传递的地址,该变量指向了调用该函数时传递的变量的地址,
//即,两个变量是相同的,只是名称不同。
}
int main() {
int a = 1;
fun(a); //调用时,你理解成把a复制给了v,而v和a是两个不同的变量,互不影响
fun2(&a); // &是取地址符号, 即把a变量的地址传递给了v,这时v和a指向了同一个
//存储地址,虽然变量不同,但实际上一个“实体”。
return 0;
}
来自:求助得到的回答