数组和指针区别讨论
在大部分的时候,大多数的人认为数组名和指针的功能是一样的,现在
int a[10]={0,1,2,3,4,5,6,7,8,9};
int *p=a;
cout < <*(p+1) < <endl; //正确
p++; //正确
a++; //报错
按理说,数组名是指向当前数组的首地址,但是如果把它也当成一个指针的时候,应该可以进行自加操作,而且该操作的范围还是在指针的有效范围内,但是为什么会报错呢~而如果用指针就可以!
现在想发起一个讨论,大伙说下数组名和指针的具体区别!
[解决办法]
a++之后怎么用呢?
再用也是代表數組a的首地址。
所以不能a++;
[解决办法]
再补充一下
a是代表一个数组,不是数组名不是代表一个数组的首地址
只有在给指针赋值时,数组名才代表一个数组的首地址,在其他代码中,数组代表一块连续的内存
int a[10] ; 申请一个数组
int *p;
p=a; 与 p=&a[0]是等价的
这时,a可以代表数组数地址
[解决办法]
因为a[10]是个数组,a是个常量,所以不能自加