C語言指標學習 一 指標是什麼

2021-05-28 07:04:00 字數 1831 閱讀 6024

僅供自己學習使用,謝謝!

指標的定義:

位址

記憶體單元的編號

從0開始的非付整數

在32位機器上,記憶體最大為4g (2^32個位元組)

指標

指標就是位址,位址就是指標

指標變數就是存放記憶體單元編號的變數,或者說指標變數就是存放位址的變數

指標和指標變數是兩個不同的概念

需要注意的是,我們平時在敘述的時候會把指標變數敘述為指標,但實際上他們的含義並不一樣

指標本質上就是乙個操作受限的非負整數 (因為這個整數不能進行加減乘除操作,這個操作沒有任何意義)

指標的分類:

基本指標型別

int * p; ----->  p變數存放的是int型別變數的位址, p 是乙個 int * 型別的變數即 int型別的指標

int i = 3;

p = &i; ------> p儲存了 i 的位址,因此 *p 就完全等同於i

指標經典兩數數互換:

#include void exchangeint(int *, int *);

void exchangeint(int * p, int * q)

int main(void)

1. 將a和b的位址作為引數傳入exchangeint的函式,因為如果用形參傳入的話,值的互換只是發生在

exchangeint的函式內部,而不會影響main中a和b的值

2. 此時 p的值就是main函式中變數a的位址,q則是b的位址。在函式exchangeint中使用 *p就完全等同於 a,同理b,這樣就完成了a和b的值的互換!請注意,這裡只是值得互換,而不是a和b位址的互換。在語言的層面,是沒有語言可以更改在執行「int a = 5」 作業系統給a分配的位址的!!

注意:a的值和a的位址是完全的兩碼事!只能更改a所指向的位址中儲存的值,而不能更改a的位址!而將a的位址作為引數傳給exchangeint函式,則p指標就指向了a,類似於定義了  int * p = &a

*的含義:

1. 乘法運算子

2.定義指標變數:

int * p; 定義了乙個名叫p的變數,int * 是p的型別,表示p只能存放int 變數的位址

3. 指標運算子:

即*p, *放在乙個已經定義好的指標變數的前面

如果p是乙個乙個已經定義好的變數,則 *p則表示以p的內容為位址的變數!

C 學習一 指標

摘要自 c 指標 菜鳥教程 runoob.com 指標也就是記憶體位址,指標變數是用來存放記憶體位址的變數。所有實際資料型別不管是整型 浮點型 字元型,還是其他的資料型別,對應指標的值的型別都是一樣的,都是乙個代表記憶體位址的長的十六進製制數。唯一不同的是指標所指向的變數或常量的資料型別不同。一 c...

c語言指標初探 一 指標與陣列

一 陣列名指標 c 編譯器將陣列名解釋為指標 include using namespace std int main cout sz 編譯器將陣列名解釋為陣列記憶體區域的首位址,對一維陣列來說要實現對某個元素的訪問,既可以用陣列名 下標的形式,也可以用間接引用 陣列名 偏移 陣列元素的指標形式 指...

C語言指標初探 一 指標與函式

1.通過指標引數申請動態記憶體。2 利用函式返回值申請動態記憶體。3 返回棧記憶體的 或靜態儲存區的 指標或引用。以上知識請參考 記憶體管理。4 函式引數的三種傳遞方式 1 值傳遞 這個應該簡單吧,來看個經典程式 include include using namespace std void sw...