C语言指针的一个小问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 04:03:46
设有语句“int a[10],*p=a;”则下面的语句中,不正确的是
A p=p+1;
B p[0]=*p+1;
C a[0]=a[0]+1;
D a=a+1;

选什么,并且帮忙说清为什么,谢谢

选D

数组名是一个指针(即地址),但是它是一个指针常量,也就是说数组名a表示的是一个地址,这个地址指向了数组元素在内存中的存储位置的首部。而且这个这个地址是一个常量,它自身又存在于内存的某个特定区域,它的值是不能被改变的。这和 你定义一个指针变量不一样,指针变量中的值是可以被改变的。

D

数组名是指向数组中【0】位置的常量指针,其值不能被修改。

选D
数组名虽然是一个指针,但它是指针常量,不能赋值。