回复 12# qingxin111 的帖子
#include <stdio.h>
void ValueReference(int i);//值引用函数
void PointerReference(int* p);//指针引用函数
void main()
{
int i=3;
int *p;
p=&i;
printf("i的地址=%p,p的地址=%p\n",&i,p);
printf("调用ValueReference函数以后:\n");
ValueReference(i);
printf("i的值=%d\n",i);
printf("调用PointerReference函数以后:\n");
PointerReference(p);
printf("i的值=%d\n",i);
}
void ValueReference(int i)
{
i+=3;
printf("值传递以后i的地址=%p,",&i,i);
}
void PointerReference(int* p)
{
*p+=3;
printf("指针传递以后p的地址=%p,",p);
}
/*
你会发现ValueReference函数中被传过来的参数i的地址已经与主函数中的i的地址不相同,
也就是说ValueReference函数操作的i只是主函数中i的一个副本,该函数只改变了i的副本的值,并没有改变实际i的值;
而PointerReference函数的参数是i的地址,函数修改了p所指向的值,也就修改了i地址所指向的值。
LS,明白否?解释若有不妥之处,请大家指正。
*/