问答详情
源自:5-2 指针运算

p[3] 为什么 会等于 (p+=3)

p[4]=101;与p[4];*p=101;不一样吧,p+=3跟p[3]不是一样吧

提问者:落幕的星夜 2016-03-09 14:46

个回答

  • 慕函数8284414
    2019-09-27 14:37:33

    p[3]代表的是array[0],是具体的变量,p+=3,这时的P指向array[0]。所以作者在用p[4],*p = 101,后结果变成了101,1,2,1,10,100。这里P[4]只是array[1],并没有把地址指向array[1],所以p[3]并不等于p+=3.可以看看视频代码里面最后一行printf语句,printf("P[%d]=%d",i,p[i])。这里的P[i]和p[3]是一个意思就是具体的某个变量

  • 慕后端9788028
    2016-09-25 11:24:41

    p[4]=101代表从初始位置(a的地址就始)以四个字节为一步,向前走4步,到达某个位置,然后对这个位置进行初始化赋值,即把101赋给这个地址所代表的内存空间。p[4],*p=101,p[4]代表从初始位置(a的地址就始)以四个字节为一步,向前走4步,到达某个位置。*p=101,代表此时指针指向的地址(即走了四步后所在位置)并对这个地址所在的内存空间进行初始化,赋值101。p+=3于p=p+3等同,加的是步数,原理跟p[3]一样

  • CZHG
    2016-03-13 11:59:19

    p[4]=101 与p[4]一样

  • CZHG
    2016-03-13 11:58:17

    p[4]=101 与p4[]一样


    *p=101,表示p所指向的地址里的内容是101


    p+=3 跟p[3]都一样