#include <stdio.h> int main() { int *p = NULL; int a[] = {1, 2, 3, 4}; p = a; *(p++) += 100; printf("%d %d %d %d %d\n", *p, a[0], a[1], a[2], a[3]); return 0; }
1 101 2 3 4
2 101 2 3 4
1 102 2 3 4
2 102 2 3 4
考点:优先级+指针步长传送门
p=a;//相当于强制转换 p=(int *) a; *(p++) + = 100;等价于 先操作p++;但是不立马生效 *p+=100;//等价于a[0]+=100; 下面一行才是 p=p+1;//也就是p=&a[1]
被括号的优先级干扰了判断,p++与++p的考点在本题中没有想到
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题