为了账号安全,请及时绑定邮箱和手机立即绑定

引用数组元素的方法的问题

引用数组元素的方法的问题

C
往事不追 2016-08-16 10:51:15
main(){int i;int a[10];int *p=a;for(i=0;i<10:i++)    {    *p=i+1;printf("a[%d]=%d\n",i,*p);p++;    }} *p=i+1; 我理解是把i+1赋值给数组a,但不能理解作用是什么。想问这一语句大家怎么理解?作用和含义是什么?
查看完整描述

6 回答

已采纳
?
快乐的时光

TA贡献79条经验 获得超48个赞

//img1.sycdn.imooc.com//57b3e2c20001510325921936.jpg(null)
我用图示给你解答。希望能够帮到你

查看完整回答
2 反对 回复 2016-08-16
点击展开后面1
?
应龙

TA贡献11条经验 获得超8个赞

p指的是数组a的首地址,*p指的是a[0],p++就是数组后一个元素的地址,*p就变成a[1]依次类推。学汇编数组运用就懂深了。

查看完整回答
1 反对 回复 2016-08-17
?
凌小天3635910

TA贡献17条经验 获得超13个赞

main()
{
    int i;                //创建控制变量i
    int a[10];            //创建整形数组a,大小为10
    int *p=a;             //创建整形指针p,并将数组a的首地址赋值给p
    for(i=0;i<10;i++)     //建立一个循环,次数为10次
    {
        *p=i+1;           //向p所在的地址赋值,值的大小为i+1
        printf("a[%d]=%d\n",i,*p);        //输出数组标号和对应值
        p++;              //让p指向下一个地址
    }
}                        //整个过程就是对数组a赋值1~10;。

输出结果为:

a[0]=1;

a[1]=2;

a[2]=3;

a[3]=4;

a[4]=5;

a[5]=6;

a[6]=7;

a[7]=8;

a[8]=9;

a[9]=10;


查看完整回答
1 反对 回复 2016-08-16
?
wooviet

TA贡献6条经验 获得超5个赞

最后的结果也就是a[0]=1,a[1]=2……

这里p是一个指向数组首地址的指针,所以*p=i+1的意思就是a[0]=i+1,要知道a就代表的是数组的首地址,也就是说数组名就是数组首地址,由于数组在内存中的空间是连续的,所以,p++就代表p这个指针依次指向数组的下一个元素,也就是说这个程序用p这个指针依次指向数组每一个元素,然后每个元素都被依次赋值为i+1。

这样说请问你听懂了吗?

查看完整回答
1 反对 回复 2016-08-16
  • 往事不追
    往事不追
    虽然后来自己也想明白了,但是还是谢谢你很认真的解答。
?
Yexiaomo

TA贡献152条经验 获得超157个赞

因为 int *p = a ;   // 等价于 int *p = &a[0];

// p 指向 数组 a[10] 的 首地址 也就是 a , 也就是 a[0] 的地址

*p = i +1 ; //等价于 a[0] = i +1;          (  * 号的意义 应该知道吧)

p++; //因为数组的地址是连续的, 所以 p++ 使 p 指向了 数组下一个元素的地址;也就是 a[1];

以此类推




查看完整回答
1 反对 回复 2016-08-16
?
黑马程序员3386844

TA贡献4条经验 获得超2个赞

简单的要死的东西就是判断真假小学生3小时就会

查看完整回答
反对 回复 2016-08-16
  • 6 回答
  • 0 关注
  • 2095 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信