*(a ++)给出错误但不是*(a + 1)?? 其中a是数组名称?

Day*_*rai 7 c arrays pointers

在以下代码中:

void main()
{
    char a[]={1,5,3,4,5,6};
    printf("%d\n",*(a++)); //line gives error: wrong type argument to increment
    printf("%d\n",*(a+1));
}
Run Code Online (Sandbox Code Playgroud)

第4行和第5行之间有什么区别.我没有收到第5行的任何错误或警告.

MOH*_*MED 27

a是一个数组对象而不是指针,因此您无法a++ 对数组对象使用该操作.因为这相当于:

a = a+ 1;
Run Code Online (Sandbox Code Playgroud)

在这里,您将为数组对象分配一个C中不允许的新值.

a + 1返回一个指向a数组元素1的指针,这是允许的