c语言,假设有语句int a[10]={1,2,3},*p;p=a;则p++完全等价于a++。这句话为什么是错的?

如题所述

如题所讲,a代表的是数组的首地址,它的值是不可以更改的,a只能表示数组首地址。所以a++本身就是不允许的。
p是一个指针,可以把数组首地址赋值给指针,指针的值是可以改变的,所以p++是没问题的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-12
c语言,假设有语句int a[10]={1,2,3},*p;p=a;则p++完全等价于a++。这句话是错的,是因为a是一个常量地址,表示a[0]的地址。所以a++是不可以执行的。
而p是一个指针变量,先p=a;然后再p++是完全没有问题的。本回答被提问者采纳