程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 基礎-關於C語言指針相加問題

基礎-關於C語言指針相加問題

編輯:編程綜合問答
關於C語言指針相加問題

代碼:

include

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);

}
運行結果:

p is 2293308q is 2293312*q is 2293312

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved