永发信息网

C语言中关于指针的一个疑问

答案:4  悬赏:0  手机版
解决时间 2021-08-16 14:15

 

main()
{
    int *p,i;
    int a[5]={1,2,3,4,5};
    p=a;

    for(;p<a+5;p++)
    {
        printf("%d\t",*p);

    }
    getch();
}

 

上面的例子是用指针打印出数组中的所有元素

 

请问循环语句中的a+5是什么意思?

最佳答案

a + 5等于 a指针(数组名就是数组首地址的指针)向后偏移5 * sizeof(数组的元素类型) 的内存地址的指针


可以理解为 a[5]这个元素 但是实际上没有这个元素 可以理解为


for (;p < &a[5];p++) 但是注意这句是不合法的 因为a[5]不存在


但是指针操作无所谓,不会出现越界问题


无非是指向了后面的内存区


比如用int循环


你会写 for (int i = 0;i < n;i++) 这里就一样的 你要循环5次 你就写i<5 而不是 <4


每次p++,p指针就会偏移一个sizeof(数组的元素的类型)


*p = a[0]


*(p + 1) = a[1]


以此类推...

全部回答

如果直接用数组名就表示是使用数组a[0]的地址。a 是int型的 那么+5就是a[6],当然没有a[6]了,这是一个上界。

循环条件,当p<a+5时循环继续执行,当p=a+5时, 结束循环。

你把1当成数组的a[0],一依次向后数5次,出界了对吧?p小于这个临界点 那循环的范围就是从a[0]到a[4]。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么赛尔号炫光芯片没有了
蜘蛛侠2peter扔了衣服,后来怎么得回
为什么我就碰不到一个好女孩子?碰不到我想象
为什么我的兵器不能普通攻击啊
《2010快乐男生全国总决赛冠军赛》谁会登上快
本地连接被隐藏了怎么恢复?
为什么下午3点的1000点卷我没得?
村把我的拆迁费截啦
怎样在电脑上点亮手机QQ
超级QQ不帮我24小时在线
每个人都会幸福吗
飞车升201级要多少经验啊
在国家规定的工程图表示方法中,右视图在主视
诺基亚哪里下软件最好最安全
电脑无故关机是什么原因?
推荐资讯
龙凤区大庆爱凯乐地址在哪,我要去那里
辽宁科技学院在吉林省的专科线是多少
设向量a,b,c,满足lal=lbl=1,ab=-1/2,=60°,则
多普达钻石一代(900)和钻石二代(5656)的区别
我的QQ老电线,是不是中病毒了?还是QQ版本有
为什么我打魔兽世界会卡死。画面不动,音乐也
谁能告诉我电脑为什么会网速慢?
为什么我江西一去CF进不去?
笔记本什么配置影响运行速度?
Der Mann stellt der kellnerin eine Frage.
我的QQ已经是太阳号了!而且我的会员已经2级
怎样练体能、臂力、弹跳 Ps:本人有些懒
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?