一个关于指针的问题

gwallan 2003-09-13 10:27:52
short a[32];
for(int i=0;i<32;i++)
*a++=i*i
这段代码是错的,把它改成:
short a[32];
short*p=a;
for(int i=0;i<32;i++)
*p++=i*i
修改了后,P也是一个指针,为什么它能递增?


...全文
24 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
seekdream1 2003-09-13
  • 打赏
  • 举报
回复
p是一个指针变量,其中存放的是另外一个变量的地址,所以p++实质上是
使p中存放的内容(即地址)加一,所以可以实现指针的移动;而a代表的
只是一个数组的起始地址,数组一经建立,其内存空间便已确定,所以你
无法改变其首地址的位置,即a无法改变。
Aofa_lee 2003-09-13
  • 打赏
  • 举报
回复
但是单独用一个a的话,它就代表这个数组的头一个地址了!它就相当于a[0]!
比如说:
int *p;
int a[3];
p=&a[0] or p=a;//They are all the same!
这样你应该好理解吧?

weibz0525 2003-09-13
  • 打赏
  • 举报
回复
p是指针变量,a是指针么?你不把它定义成数组了吗。
晨星 2003-09-13
  • 打赏
  • 举报
回复
a是个指针,但p是个指针变量。
不过这两个概念的确容易把人搞糊涂,所以,我到更倾向与把一般的地址就叫做“地址”,而不是“指针”,这样:
a是个地址,p是个指针变量。
就容易区分了。

这好比int i = 5;
5是个整数,而i是个整形变量。
5不可以++,但i可以。

69,378

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧