指標,陣列指標,指標陣列

2021-09-29 09:12:40 字數 914 閱讀 3254

1.指標

指標可以看成乙個變數,指標所佔記憶體的大小和處理器的定址空間大小有關,32位處理器指標大小為4個位元組,64位處理指標大小為8個位元組。

int* p; //定義乙個int型別的指標,p就可以看成乙個變數,p的值為0,表示p指向0位址;p也是占用記憶體的,編譯器在棧上為p分配記憶體,儲存p的值0,0位址的內容使用*p訪問;

p指向0位址,此0位址代表的是真實的記憶體條中的0實體地址還是邏輯位址,中間有作業系統記憶體管理的必然是邏輯位址,至於真實的實體地址是多少,要看作業系統為此程序分配的頁表中邏輯位址0指向的真實實體地址是多少;不同的程序,同樣的邏輯位址訪問的是不同的實體地址,就是因為作業系統為不同的程序分配的頁表內容不同;

既然p是乙個變數,我們可以直接給p賦值,p=(int*)0x12345678,如果此位址在此程序的訪問空間內,則可以訪問此位址的記憶體,否則執行時會報位址錯誤

2.陣列、陣列指標

int   array[3]=; 一維陣列的陣列名,即為指標;array等價於 int*array; array指向分配了3*sizeof(int)大小的一塊記憶體,我們可以使用*(array+i),訪問第i個變數;

int  array2[1][3]=;二維陣列的陣列名array2 也是乙個指標,此指標為陣列指標,array2等價於 int (*array2)[3];陣列指標需要指定列的大小,array2++時,array2的位址會移動到下一行的位址;array2==array2[0] == &array2[0][0];指向的都是陣列中第乙個數的位址;array2[i]也是乙個指標,指向每一行的首位址;從這個角度看array2也可以認為是乙個指標陣列

3.指標陣列

int *p[3];指標陣列也是乙個指標,不過每個陣列變數都是乙個指標

指標, 指標的指標, 陣列, 指標陣列, 陣列指標

指標 int a 10 int p a 指標的指標 int b 20 int p b int p2p p 簡單陣列 int c 10 整數陣列,含有10個整數元素 也就是說每乙個元素都是整數 指標陣列 int p 10 指標陣列,含有10個指標元素 也就是說每乙個元素都是指標 陣列指標 int p ...

陣列,指標,指標陣列,陣列指標

指標是在32位系統下佔四個位元組,64位系統下佔八個位元組的一種型別,指標指向的內容可以是常量,變數,函式,結構體,指標本身,陣列,等等.一級指標 一級指標常常在函式傳參時使用,可傳的引數有一維陣列,常量指標,函式指標等等都可以 但我們要注意不要在函式中,通過改變形參的指向來達到改變實參指向的效果,...

指標與陣列,指標陣列 陣列指標

int a 10 print n a p,a p a,a print n a 1 p,a 1 p a 1,a 1 a做乙個指標,步長為4,指向乙個元素,a做乙個指標,步長為40,指向乙個維陣列 int b 3 4 print n b p,b p,b p b,b,b print n b 1 p,b 1...