C语言 指针指向数组的选择题求解。。

2024-11-23 22:05:17
推荐回答(2个)
回答1:

关于20 和2002,是你写反了,p[1]=20;p+1的实质是p+1*sizeof(int);如果整形占4字节,那么手橡p+1就该是2004,不是2002.
对于a[i] *(&a[i]) *(p+i) ,握搏只是以中操作而已,看你习惯那种,效果都一样
a[i]等同于 *(a+i); *(&a[i]) 等同于*(&(*(a+i))),其实就是*(a+i),*(p+i) 不解释,因为a=p!
主要是对* & [] 的理解,*是取对象,&取地址,[]利用首地址和偏移量取对象!滥用无意义,看你懂那个毕皮旁,就用哪种!

回答2:

好像是你写反了轿行吧,应该是p[1]的值应该才差蚂是20吧.p+1的值是根据你的编译系统而定的,如果你在闭庆哗vc下应该是4个字节.Tc下就是两个字节了.
你所说的a[i] , *(&a[i]) , *(p+i) 所表示的是一样的,这个主要看自己的理解,自己多看一下书,就明白了