c的传值方式
c中所有传递给函数的参数都是通过传值进行的。函数获得的是实参的一份拷贝。指针,数组也如此。
1 #include<stdio.h>
2
3 void show_addr(int *p)
4 {
5 printf("p2_addr:%x\tp2_content:%x\n",&p,p);
6 }
7
8 int main()
9 {
10 int *pt, i = 2;
11 pt = &i;
12 show_addr(pt);
13 printf("p1_addr:%x\tp1_content:%x\n",&pt,pt);
14 }
输出结果:
p2_addr: bfd2e030 p2_content: bfd2e048
p1_addr: bfd2e04c p1_content: bfd2e048
可以看到,形参和实参里面存放的值相同。而存放他们值的地址不同.所以可以看出,当传递一个指针参数的时候,传递的是一份拷贝。