代碼:
main(){
int a , *p;
a = 3 ;
p = &a ;
int *q = p + 1;
printf("p is %d",p);
printf("q is %d",q);
printf("*q is %d",*q);
}
運行結果:
Process exited after 0.1425 seconds with return value 13
請按任意鍵繼續. . .
我的理解是:變量P存儲了指針a。而變量q是指針+指針,也就是說,變量q是加的是a地址後面的那個變量,至於這個變量值是多少,我不知道,可能是一個有效值,也可能是一個垃圾值,我在第三個輸出的時候是*q。也就是說把這個有效值或者垃圾只輸出,但是實際電腦運行的結果是地址,那麼我的問題是:*運算符不是獲取數據運算符嗎?
修正下
a p q的地址關系為 p=a+4 q=p+4(4就是一個整數的大小)
p的值等於a的地址
q的值等於p+1,也就是p的地址+sizeof(int)=p的地址+4,正好也是q的地址
對q再取值,因為前面分析了,q的值就是q的地址,所以q的取值就是q