p[4]=101;与p[4];*p=101;不一样吧,p+=3跟p[3]不是一样吧
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]是一个意思就是具体的某个变量
p[4]=101代表从初始位置(a的地址就始)以四个字节为一步,向前走4步,到达某个位置,然后对这个位置进行初始化赋值,即把101赋给这个地址所代表的内存空间。p[4],*p=101,p[4]代表从初始位置(a的地址就始)以四个字节为一步,向前走4步,到达某个位置。*p=101,代表此时指针指向的地址(即走了四步后所在位置)并对这个地址所在的内存空间进行初始化,赋值101。p+=3于p=p+3等同,加的是步数,原理跟p[3]一样
p[4]=101 与p[4]一样
p[4]=101 与p4[]一样
*p=101,表示p所指向的地址里的内容是101
p+=3 跟p[3]都一样