首页 新闻 会员 周边

c语言中关于指针和数组的一些问题

0
悬赏园豆:20 [已解决问题] 解决于 2019-11-22 18:51

int a[10]={1,5,6,7,8,1,2,3,4,5};
int p,i;
p=a;
for(i=0;i<10;i++)
printf("%d",
(p+i));

请问:1.p=a,指的是什么意思?是把a[0]的地址给p吗(为什么不是p=&a的形式)?
2.我们不是只定义了一个指针吗(就是*p)?为什么在for循环中可以多次循环?

Fate-Joker的主页 Fate-Joker | 初学一级 | 园豆:158
提问于:2019-11-21 21:24
< >
分享
最佳答案
0

这里的a是数组,是引用类型,存放的是数组的开始地址
p=a;应该是不对的吧,不能把int * 类型赋值给int吧,除非是int * p;
如果是int p;的话 p=a;就是把p指向数组的开始地址。
然后可以通过
p取到数组的值,
数组每个元素的地址是连续的,所以可以通过p+1移动到下一个地址,*(p+1)就能取到数组下一个位置的值。
直接输出p+1的话输出的应该是一个地址吧。
不知道我理解的对不对,错的话勿喷。

收获园豆:15
彭小立 | 小虾三级 |园豆:634 | 2019-11-22 08:39

今天啃书,补充一下,p=a其实是把a[ ]的基地址赋给p,a不是常量,而是数组...

Fate-Joker | 园豆:158 (初学一级) | 2019-11-22 18:53
其他回答(1)
0

a并不是变量
a[0]的地址按理应是&a[0],而不是&a(&a是别的语义,但是感觉是一种错误的边缘),
指针可以做加减算术。

收获园豆:5
窗户 | 园豆:886 (小虾三级) | 2019-11-21 22:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册