对于void fun (char *,char *b){a=b; (*a)++}

来源:百度知道 编辑:UC知道 时间:2024/06/20 14:03:09
void fun (char *,char *b){a=b; (*a)++}
main ()
{char c1='A',c2='a',*p1,*p2;
p1=&c1;p2=&c2;fun(p1,p2);
printf("%c%c\n",c1,c2);}
输出的结果是:Ab为什么呢?不是在定义函数fun时,a=b,则具有同样的值吗??
这与下面的有什么区别呢?
下列程序段的输出结果是 b 。
int *p, *q, k = 5, j=10;
p=&j; q = &k ;p = q ; (*p)++;
printf("%d",*q);
A、5 B、6 C、10 D、11
不能使同样的道理的吗??
如果是指针相等,就默认为两个值一定相等,这不对吗?

a,b是子函数中的形参,调用时p1、p2将其中存的地址值传给a、b,所以在子函数中实际是a、b在操作c1、c2,a=b句后a、b均指向c2,于是(*a)++使c2中值自加变为'b',c1中值并未有任何变化。输出时当然是Ab了。
至于第二个问题也是一个道理,j中值并不受影响。

void fun (char *a,char *b){a=b; (*a)++}应该是这样的吧,不然a就没有什么意思了 c2('a')->*P2('a')->*b('a')->*a('a') 'a'++

a+1输出的c%.ASCLL码值对应就是b

第二也一样*p=*q=k=5 (*p)++=6