关于 指针 和 数组 的一个小问题.

来源:百度知道 编辑:UC知道 时间:2024/05/15 04:41:38
int h[10],*p;
for(p=h;p<h+10;p++)
scanf("%d",p);

这个是输入十个整数到数组h中,.
但是输入的时候 scanf("%d",p); 这里是P啊? 为什么结果保存到数组中去了呢?
还有个问题,*p指针就是地址,.能理解,.
这里我能否吧 p(没有星号) 理解为一个隐形数组呢?
.
.
.
.
.

最开始P是一个指向数组头的指针 也就是说 *p=a[0]
随着p的数值增加 p指针指向的位置就一点点向后移动 知道指向最后一个数组!

所以你你输入的数在数组里面

另外 也不应该吧P看成是 隐形数组
数组是一个连续的变量
P是指向最开头的地址

就像 一条绳 头上绑个木棍 木棍就是P 绳子就是数组!

数组名“h”实际上是这个数组的首地址,所以语句 p = h就是把指针P指向数组 h[10]的首地址,然后给P这个地址输入值当然就是保存到数组里啦

当你把 p = h的时候,就能用指针p来操作数组h了!
例如*p的值就是h[0], *(P+1)就是h[1];以此类推

p=h,h是数组名也是数组的首地址,p=h,p++,所以值被赋进了数组

p=h,这句话把数组的首地址给了p,在输入中写"p"和"h[i]",实完全等价的.