指標知識點

2021-07-15 01:56:23 字數 1121 閱讀 9743

指標定義:指標是乙個變數,儲存的內容為位址。

int num = 5;

如果系統分配給num的空間為0x1000到0x1003 num的位址就為首位元組位址0x1000。0x1000內儲存的內容為5。

定義指標p

int* p = #

指標p內儲存的內容為num的位址,如果系統給p分配的位址為0x2000,可以得到下圖

指向記憶體空間和對應的記憶體空間:

num++:對num對應的記憶體空間的值加1.

p++:對p對應的記憶體空間的值加1.

(*p)++:對p指向的記憶體空間加1.

『 * 』為取值運算子,根據對應記憶體空間裡儲存的位址找到其對應的記憶體空間。

p == &num

*p == num == *(&num)

int *pp = &p;

num == *p == **pp ==*(&num)

p == *pp == &num

int* ppp = &pp;

**ppp == *pp == p == &num

***ppp == **pp == *p == num =*(&num)

int *p; 定義為指標型別為int* 指向int

char *p; 定義為指標型別為char* 指向char

野指標:隨機指向一塊記憶體的指標,有可能導致記憶體洩漏。

記憶體洩漏:訪問一塊不可訪問或已經釋放的記憶體。

int *p;

scanf("%d",p);

printf("%d",*p);

這裡雖然定義了指標,但是未對其進行初始化,系統對未初始化的區域性變數分配乙個隨機的值,所以p指向乙個隨機的位址,而這個位址系統不一定分配給使用者,使用者不一定有使用許可權,或者有使用許可權但已經釋放,如果使用此指標就有可能造成記憶體洩漏。

避免野指標需要給指標賦初值值

int * p = (int * )malloc(sizeof(int))

;int * p = null;

指標知識點

1 一級指標 int p 2 二級指標 int p 3 多級指標 int p etcconst int p 指標常量 指標是乙個常量,必須初始化 int const p null 5 陣列指標和指標陣列 陣列指標 對二維陣列進行操作 int p n 陣列指標 儲存指標型別的陣列 int p n 6 ...

C 知識點 指標

指標就是給數值分配乙個在記憶體中的空間,然後訪問是不用直接訪問數值,而是訪問那個位址,就可以讀取到那個數值,這樣可以做到不能修改數值。通過指標,可以簡化一些 c 程式設計任務的執行,還有一些任務,如動態記憶體分配,沒有指標是無法執行的。指標的本質是變數,可以是各種資料型別,定義乙個指標 ip 其中 ...

函式指標知識點

cout hello endl typedef int funcptr int a,int b funcptr funcptr funcptr add int res funcptr 4,3 int res funcptr 4,3 這兩種方法都可以,但是我覺得第一種方法更好,更符合指標的引用方式 c...