#include <stdio.h>
int main()
{
int a[] = {1,2,3,4,5,6,7,8,9};
int b[] = {1,2,3,4,5,6,7,8,9};
int c=5;
int *p = a;
printf("—> %d", (c[b])[p]);
return 0;
}
当我编译this时,结果为7。
#include <stdio.h>
int main()
{
int a[] = {1,2,3,4,5,6,7,8,9};
int b[] = {1,2,3,4,5,6,7,8,9};
int c = 5;
int *p = a;
printf("—> %d", (c[b]));
return 0;
}
当我擦除[p]时,结果为6。
我想知道如果只打印[b]会发生什么。
不幸的是,该程序无法正常工作,并且错误消息看起来像
1.c: In function ‘main’:
1.c:9:19: error: expected expression before ‘[’ token
printf("—> %d", [b]);
有一个a,b,c的地址
printf("%d\n",&a); ----> -13360
printf("%d\n",&b); ----> -13408
printf("%d\n",&c); ----> -13412
printf("%p\n",&a); ----> 0xffffcbd0
printf("%p\n",&b); ----> 0xffffcba0
printf("%p\n",&c); ----> 0xffffcb9c
我是第一次看到这种语法。
这是常见情况吗?
有人可以告诉我为什么第一个代码的结果是7吗?