對於以下**段:
int a = ; int *p = a; int *q = &a[5]; printf("%d", q-p);
當sizeof(int)為4時,以下說法正確的是:
a. 因為第三行的錯誤不能編譯
b. 因為第三行的錯誤執行時崩潰
c. 輸出5
d. 輸出20
指標的減法實際是位址間能存放多少個指標指向物件的資料型別的值。a是int型陣列,其位址是連續的。因此結合指標減法的定義知其之間能放5個int變數。
需注意,平時對指標變數做±得到的可不對應指向物件型別的大小,所以一般擴充的時候要n*sizeof(你指向的型別)。
c語言指標問題
c是一門可以直接操作記憶體的語言,但這並不代表我們就可以以自己主觀的意思來操作記憶體。看下面的 includevoid pr int p,int p1 int main void pr int p,int p1 執行後結果都是12.首先,我們要明白指標的定義是乙個存放位址的變數,也就是說,它指向的位...
c語言指標問題小結
最近使用指標的時候遇到了一些問題,在這裡做乙個簡單的總結,加深下對指標的認識。陣列和指標大部分情況下可以互換使用,但是有些時候卻是必須得區別對待,否則一不小心就會出錯。比如下面四個test例子,test1是對的,test2是錯的,指標指向乙個位址的情況,因為getuartdata 返回乙個指標位址,...
C語言回首 指標問題
最近偶然看起了c語言,發現還十分有趣 現在起開個新坑 接下來的一系列部落格都會記錄我重新學習c語言和資料結構時的所思所感 指標變數之間賦值是需要相容的。例如 int a int的位址 char b char的位址 void型別的指標可以做任意型別位址的賦值操作。例如 void p int位址可以 p...