C语言中值传递和地址传递(指针传递的区别)
1、值传递
值传递时,函数接收到的是参数的一个副本,对副本的修改不会影响到原始变量。
#include <stdio.h> void modifyValue(int x)
{ x = 10; // 修改的是x的副本,对原始变量无影响
} int main()
{ int a = 5; modifyValue(a); printf("After modifyValue, a = %d\n", a); // 输出: After modifyValue, a = 5 return 0;
}
2、指针传递
当通过指针传递时,函数接收到的是变量的地址,因此函数内部对指针所指向地址的修改会反映到原始变量上。
#include <stdio.h> void modifyAddress(int *ptr)
{ *ptr = 10; // 修改ptr所指向的值,即原始变量的值
} int main()
{ int a = 5; modifyAddress(&a); // 传递a的地址 printf("After modifyAddress, a = %d\n", a); // 输出: After modifyAddress, a = 10 return 0;
}