获取指针作为数组成员

时间:2018-12-12 18:15:33

标签: c arrays pointers

#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吗?

0 个答案:

没有答案