c - 使用++增加数组指针

标签 c arrays pointers

在 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/

相关文章:

php - 循环 OBJECT 并获取键和值

javascript - .map() 函数返回一个数组数组而不是对象数组

java - 使用 .NET Web 服务时将 ArrayOfStrings 转换为 JAVA 中的 String[]

c - 如何使用允许我访问结构字段的结构来测试 -> C 运算符?

c++ - 通过类中重载的 operator new 返回不同的类指针

c++ - 将常量 T* 常量转换为 T*

c - 使用 ATMEGA168 测量时间

c - 将值从 C 变量传递到嵌入式 shell 脚本?

C 字符串大小,包括空终止符

c - 如何垂直打印命令行参数?