C中的这个指针问题我不理解

aboys72 2004-01-09 10:26:05
main()
{
int *p,a[10];
p=a;
.
.
.
}

以上程序代码中,定义了指针变量的指针和数组a
可是p是来保存*p的地址怎么可以赋值a变量呢!

我知道以上的理解是错误的,可是我不明白p=a;这句是什么原理。
...全文
26 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
KingI 2004-01-09
  • 打赏
  • 举报
回复
p=a就是将数组a的首地址赋给指针变量p,这样就可以用指针p操作数组了
RaymondCai007 2004-01-09
  • 打赏
  • 举报
回复
楼上的都说的很对
基本就是指针直接的赋值
这样的操作还是很多,也很方便的
特别实在c语言中。
xclzteb 2004-01-09
  • 打赏
  • 举报
回复
在TC中,数组名代表第一个元素(即首元素)的地址,与&a[0]的功能相同,而指针变量中的内容实际上是一个指向元素的存储位置的位置编号,即是一个整数值。即在程序中的“p=a”相当于把整型数组的首元素的地址(是一个整数)赋值给指针,让指针指向数组的首元素。它和“p=&a[0]”是等价的。而在TC中数组名代表首元素的地址,是一个整数。而*p只代表p指针指向元素的值,相当于对它所指元素的引用而已。并不是说*p是用来保存地址,它代表的是指针指向的元素(这里是a[0])的内存单元的值,现在清楚了吧,还有什么不清楚的地方请和我联系。
gniq 2004-01-09
  • 打赏
  • 举报
回复
所谓数组就是连续的一段内存。数组的首址可以用数组名a来表示,也可以由&a[0]来表示。指针是用来操作内存用的,他指向内存的地址。
这里p 指向了 数组a 的首址
nasi00 2004-01-09
  • 打赏
  • 举报
回复
基本的array的名字就是它的首地址,但是c++中的string除外哦。
所以这个就很好理解了阿,p=a就是让指针p指向数组a的首地址,也就是&a[0]。
romeohua2004 2004-01-09
  • 打赏
  • 举报
回复

a是一个指向数组开头的指针
因此p = a;就是让p指向这个指针。
也就是说修改p所指的对象的值也就同时修改了a的值
justforhigh518 2004-01-09
  • 打赏
  • 举报
回复
数组名a是一个常量指针。
p 是一个定义的指针变量。
=是一个定义的附值运算符。
p=a;
指针间的相互附值。
xinghan79 2004-01-09
  • 打赏
  • 举报
回复
什么人阿
fcbh 2004-01-09
  • 打赏
  • 举报
回复
int *p,a[10];这里定义了一个指针变量 P,和一个数组 A;
p=a;这里是将针变量 P指向数组 A
;
Bandry 2004-01-09
  • 打赏
  • 举报
回复
大哥,
int *p,a[10];
定义的是 p:指针变量,a是一个数组的首地址,我们可以将其以指针来对待
既然p是指针变量,当然可以赋给它一个指针值
dengyiwolf 2004-01-09
  • 打赏
  • 举报
回复
*p 为指针
p 为指针变量
变量与变量之间可以互相赋值的
farMaker 2004-01-09
  • 打赏
  • 举报
回复
建议楼主买一本《C专家编程》看看,上面对于数组和指针的部分讲的已经不能再清楚了~

BTW:这本书立足点的确比《C陷阱与缺陷》要高,讲的也深,看过之后发现《C陷阱与缺陷》确实白买了,应该还是对得起¥40的售价,翻译也不错,个人以为
yjhyn 2004-01-09
  • 打赏
  • 举报
回复
我已经无话可说了

69,382

社区成员

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

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