06 指標基礎

2022-05-30 01:24:14 字數 2202 閱讀 9199

為了方便訪問記憶體中的內容,給每乙個記憶體單元編號,我們稱這個編號為位址,也就是指標。

指標是一種資料型別 所以 指標有自己的記憶體 儲存的是編號(位址)

1 指標本身的型別指向的按型別*

2 指標指向的型別可以是所有型別 包括是指標型別、陣列型別、函式型別……

但是具體某種型別指標 只能指向具體的型別

3 指標本身的記憶體用來存指向的內容的位址(指標裡面只有編號)(四個位元組)

4 指標指向的記憶體可以是各種型別 記憶體大小不限定

// 型別 變數名;

int num = 10;

// 型別 變數名;

// 指標型別 指標名;

// 指向的型別* 指標名;

// *:指標定義 在定義時 表示定義的是乙個指標

// *:取內容符 在別的地方 表示取後面的這個指標的內容

// &:取位址符 表示取位址

int* pnum = #

*pnum = 2;// 等價於 num = 2;

cout << num << endl;

int num = 0;

int* pnum;

pnum = #

int num = 0;

int* p1 = #

int* p2 = p1;

int* pi = (int*) 0x36;

陣列名就是陣列的首位址

int arr[5] = ;

int* parr = arr;

cout<< char*型別指標<

此時會列印字串

char* pch = "gkul";

​int arr[5] = ;

cout << arr << endl;

char str[5] = ;

cout << str << endl;

char* pch = "ghjk";

cout << pch << endl;

// 字元陣列首位址 是char*型別

// char*型別可以直接cout整個字串 直到'\0'為止

有時候,指標定義後或使用後,沒有了指向,但是指標還在。

由於指標可以直接操作記憶體,不安全。

所以在記憶體開始時(位址編號為0)的位址,作為乙個特殊位址。

將指標指向這裡是安全的。

int* p1 = null;

int* p2 = nullptr;

int* p3 = (int*)0x0;

int num = 10;

cout << num << endl;// num的值

cout << &num << endl;// num的位址

int* pnum = #

cout << pnum << endl;// num的位址

cout << *pnum << endl;// num的值

cout << &pnum << endl;// pnum的位址

int ** pp = &pnum;

cout << pp << endl;// pnum的位址

cout << *pp << endl;// num的位址

cout << **pp << endl;// num的值

cout << &pp << endl;// pp的位址

int *** ppp = &pp;

cout << ppp << endl;// pp的位址

cout << *ppp << endl;// pnum的位址

cout << **ppp << endl;// num的位址

cout << ***ppp << endl;// num的值​​

4 1 指標的基礎

1 指標的本質 指標在本質上也是乙個變數 指標需要占用一定的記憶體位址 指標用於儲存記憶體位址的值 不同型別的指標占用的記憶體空間大小相同 位址匯流排32位機,4個位元組 2 號的意義 在指標宣告時,號表示所宣告的變數為指標 在指標使用時,號表示取指標所指向的記憶體空間的值 號類似一把鑰匙,通過這把...

基礎4 1 指標入門

3 指標與函式 3 實踐 4 練習 指標是一種儲存變數位址的變數。在計算機中每個儲存單元 乙個位元組 都有乙個編號,這個編號稱為變數位址。普通變數的值是實際值,指標變數的值是變數的位址。完整 見001 address.c 指標代表的是位址 如果輸入的是位址,則相當於 變數,得到對應的值 變數位址通常...

C 基礎(1) 指標

三.指標使用 四.函式和指標 五.const 和指標 指標是另外一種型別的復合型別,復合型別是指基於其它型別定義的型別 意思是說指標是指向什麼型別,那麼指標本身就是什麼型別 指標其實就是程式資料在記憶體中的位址,而指標變數是用來儲存這些位址的變數 記憶體是乙個很大的,線性的位元組陣列。每乙個位元組都...