在 C 中,我知道你可以像这样打印数组的不同元素
int a[5] = {1,2,3,4,5};
printf("%d", *(a+2));
但是为什么下面的打印语句会出错呢?
printf("%d", a++);
错误是:
error: cannot increment value of type 'int [5]'
我知道 a
是数组类型,并且不能递增数组,但是 a
不也是指向数组中第一个元素的指针吗?
最佳答案
sizeof(a)
是数组占用的字节数。你想要例如sizeof(a)/sizeof(a[0])
。
a
如果转换为 1,则分解为指向数组中第一个元素的指针。由于它在您的示例中是一个数组,因此您不应该能够增加它。
你可以做的是:
int a[] = {...};
int *aptr = a; // a has decomposed into a pointer
aptr++; // etc.
关于c - 使用++增加数组指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28885633/