int a[5]={2,4,6,8,10},*P,* *k;
p=a; k=&p;
printf("%d",*(p++));
printf("%d\n",* *k);
这个是怎么计算的 求解为什么是 2 3
其实折腾半天,就是等价于
int i=0;
printf("%d",a[i++]);
printf("%d",a[i]);
答案应该是2,4吧,3哪来的
p是指针,指向a数组,k是指针的指针,指向p指针
这里 * (p++)是先执行 * p,然后p再加1,因此输出是数组a的第一个元素2,然后p指向a数组第二个元素4
k指向p指针的地址,当p++使p指向a数组第二个元素后,* k就相当于p,也是指向a数组第二个元素,再用*取值,输出是4
*(p++) ++在后会在做完值操作之后再自增 所以先 *p取值2 p是int型指针相当于数组下标偏移 p中存储的地址值已经是a[1]的地址了
k=&p 相当于把p指针的地址存入k *k取出指针p对应的地址中的地址值 **k就相当于取出指针p对应的地址中的地址值,再将该地址值中对应的值取出来 我觉得是4 不知道是你打错了还是什么情况