-
int *a 定義指標變數。 a 是指向 int 變數的指標變數,稱為 int 指標。 * 表示指標的型別。 指標變數名稱是 a 而不是 *a。
int 陣列。
a 陣列的名稱是第乙個陣列元素的位址,與陣列的第乙個位址相同,通俗易懂。
a 表示陣列的第乙個位址,與上面的數字相同,但含義不同。
在記憶體中,A+1 是下乙個元素。
A+1 是乙個陣列。
-
陣列名只在原始碼中有意義,所以它們只在源環境或編譯時才有意義(只有編譯好的可執行程式中的位址),這時編譯器會為所有資料實體建立乙個對映表“identifier-address”,包括變數、陣列、物件、結構體、函式體,這樣在遇到變數時就可以轉換為位址, 同時,方便除錯跟蹤。
如果在除錯模式下編譯,這些表和其他額外資料將作為除錯引數包含在目標程式中,而如果編譯為發布版本,則不包括此資訊。
所以從編譯的角度來看,任何變數名都是指標,所以指標陣列名當然也是指標,而最簡單的int a,“a”本身就是指標。 在訪問任何變數時,編譯器會安排首先獲取位址,然後根據變數型別(即隱式轉換)決定是否進一步獲取該值。
例如,在訪問乙個公共變數時,編譯器的預設操作是取值,所以當int b=a時,它先取a和b的位址,然後把a的值寫入b的記憶體中,如果要獲取a的位址,需要顯式轉換int *p=&a;,這樣編譯器就可以獲取 a 的位址並將其直接分配給 p,而無需進一步操作。 如果 a 是乙個陣列,我們會遇到 int *p=a; 編譯器獲取位址後,直接給 p 賦值,無需進一步操作。
摘要: 1. 資料實體:源中的所有變數、陣列、物件、結構和鍊表。 函式體,所有可訪問的資源。
2. 任何資料實體都有乙個位址。
3.編譯器在訪問資料實體時,必須首先找到它,即必須獲取位址。
4.普通變數的值和陣列的位址是編譯器設計的隱式轉換。
-
這些概念都離不開RAM,所以先說記憶體。
記憶就像一棟樓,裡面有很多很多小房間,每個房間都有乙個門牌號,就是位址。 位址的功能是通過這個門牌號找到對應的房間。
指標是把位址放在多個房間(這個東西很大,需要很多房間才能容納森生),通過指標得到放位址的地方就可以找到目標房間(記憶體)。
陣列意味著我需要乙個可以放置n個位址或值的連續房間(引用型別儲存位址,值型別直接儲存值),陣列名稱的變數儲存這些連續房間的第乙個彈簧帶的位址。
純手工打,謝謝。
-
朋友爛答案]:a,c
陣列指標只是乙個指標在記憶體中佔據儲存空間的指標變數,而指標陣列是以陣列形式存在於記憶體中的多個銀指標變數,佔據多個指標的儲存空間。
指標陣列。 首先,它是乙個陣列,陣列的元素都是指標,陣列占用的位元組數由陣列本身決定。 它是“儲存指標陣列”的縮寫。 >>>More