c++指针与数组首地址的问题!
最近在学指针这一块,遇到点麻烦!chara[]={'a','b','c','d','e'}char*p=NULLp=a//指针指向数组首地址//类似上面的代码,&a不也表...
最近在学指针这一块,遇到点麻烦!
char a[]={'a','b','c','d','e'}
char *p=NULL
p=a //指针指向数组首地址
//类似上面的代码,&a不也表示该数组的首地址吗,那我把p=a改成p=&a为什么不行。什么时候该用&a,什么时候改用a? 展开
char a[]={'a','b','c','d','e'}
char *p=NULL
p=a //指针指向数组首地址
//类似上面的代码,&a不也表示该数组的首地址吗,那我把p=a改成p=&a为什么不行。什么时候该用&a,什么时候改用a? 展开
7个回答
展开全部
p=a 等价于 p=&(a[0])
具体讲: 可以认为a这个变量中放的是数组的首地址,即数组第一个元素的地址, a本身占一个存储单元(char*), 那么p=&a实际上是取的a的地址, 而非数组的地址
在具体一点: 假设数组的首地址是INDEX1(那么INDEX1就是a[0]的地址了~), 那么这个值存在a中, 而a放在地址为INDEX2的内存位置, 其值为INDEX1
p=a 结果为 p=INDEX1, 这个是你想要的
p=&a 结果为 p=INDEX2, 这个不是你要的吧
p=&(a[0]) 结果为 p=INDEX1, 也行
个人理解, 如有偏差, 敬请指正~
具体讲: 可以认为a这个变量中放的是数组的首地址,即数组第一个元素的地址, a本身占一个存储单元(char*), 那么p=&a实际上是取的a的地址, 而非数组的地址
在具体一点: 假设数组的首地址是INDEX1(那么INDEX1就是a[0]的地址了~), 那么这个值存在a中, 而a放在地址为INDEX2的内存位置, 其值为INDEX1
p=a 结果为 p=INDEX1, 这个是你想要的
p=&a 结果为 p=INDEX2, 这个不是你要的吧
p=&(a[0]) 结果为 p=INDEX1, 也行
个人理解, 如有偏差, 敬请指正~
展开全部
a代表首地址是常量,a的值就是数组的首地址,但如果用取地址符,要用P=&a[0],你直接用&a,相当于用P=*a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从语法上来说p=&a这句话是没有错误的。都是指针之间的赋值
数组名,本身就是一个指针,这个你应该知道,他指向数组的首地址
数组名,本身就是一个指针,这个你应该知道,他指向数组的首地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a是首元素的地址,++a偏移一位后是指向下一个元素地址
&a是整个数组的地址!++a偏移一位后是指向最后一个元素的下一位元素地址!
忘采纳!
&a是整个数组的地址!++a偏移一位后是指向最后一个元素的下一位元素地址!
忘采纳!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
&a怎么还是首地址呢?&a[0]才是首地址啊,a本身就是一个指针,指向数组首地址,如果找指针的地址会用到&a,不过几乎不会
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询