c語言中指標和陣列在編譯時的區別 例如:int a[10]和int *b,a[5]和*(b+5) 在編譯的時候區別是什麼? 經過反覆的查資料和請教他人,最後在《c專家程式設計》裡找到了很好的答案。
1。編譯器對陣列名和指標變數的處理方式
編譯器在編譯時會產生乙個符號表,記錄了符號名和它的位址。對於指標變數,這顯然很好理解。而陣列名就不那麼明顯了,它僅僅是乙個符號而已,何來位址?編譯器是這樣處理的,它記錄了array[0]的位址;這和我們通常的理解也是一樣的。
2。帶下標形式的陣列和指標定址方式
(1)陣列情形
char a[9]="abcdefgh";
...
c=a[i];
在編譯期,會在符號表中建立這樣一條記錄:
name:a address:9980
要獲取a[i]的值分兩個步驟:
step 1:取得i的值並和9980相加
step 2:在記憶體位址(9980+i)處取其內容
(2)指標情形
char* p="abcdefgh";
...
c=p[i];
在編譯期,會在符號表中建立這樣一條記錄:
name:p address:4624
要獲取p[i]的值分三個步驟:
step 1:在記憶體位址4624處取其內容,比如說「5081」
step 2:取得i的值並和5081相加
step 3:在記憶體位址(5081+i)取其內容
C Ado 在編譯的時候,報錯。
其中錯誤提示如下 fatal error c1083 cannot open type library file c program files common files system ado msjro.dll no such file or directory 1 首先確定在標頭檔案ado2.h...
陣列指標和指標陣列的區別
陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...
陣列指標和指標陣列的區別
陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...