[bo][un]xiaofeixia99999[/un] 在 2008-6-4 17:31 的发言:[/bo]
这个还是不理解.
我觉得可能是*pi+=2没有算.
只有pi+=2算了.
不然不会只等于6
照你那样说.你能说说为什么后面同样是*pi+=2;
后面一个为什么没有算吗
这个还是不理解.
我觉得可能是*pi+=2没有算.
只有pi+=2算了.
不然不会只等于6
照你那样说.你能说说为什么后面同样是*pi+=2;
后面一个为什么没有算吗
#include <stdio.h>
void change_p(int *pi)
{
*pi+=2;
pi+=2; // 只有这个是通过指针传值,改动影响了实参
*pi+=2;
printf("%d\n",*pi);
}
main()
{
int *p,a[]={1,4,7,10};
p = &a[1];
change_p(p);
printf("%d\n",*p);
}
因此上述代码只是把数组改成a[]={1,2,7,10};
然后p = &a[1];这个指向仍来不变,但是子函数内部就是能看成这个后面的后面的*pi+=2;也参加运算了