C語言的指標

2021-07-14 10:55:30 字數 1244 閱讀 5420

1、num++:使num對應的記憶體空間的值加一(0x1000  ---->  0x1004)

2、(*p)++:p所指向的記憶體空間的值加一

3、p++:p對應的記憶體空間的值加一(0x1000 ---> 0x1001)

指向的記憶體空間:根據指標變數對應的記憶體空間儲存的位址,再找到該位址所對應的記憶體空間

int ***p;

整型指標的指標的指標變數

p = #

p所對應的記憶體空間的值就是num的位址

num = *p;

num對應的記憶體空間的值就是p所指向的記憶體空間的值

1、char *ptr = "hello world";

字元就是位址(字串首字元的位址)

2、定義乙個指標並初始化

char *ptr = #

3、指標型別和指標所指向的型別

int *p;

指標型別:int *

指標所指向的型別:int

1)野指標為系統隨機分配的位址,並未向系統申請,此位址不可用

2)野指標出現的段錯誤為記憶體洩露。

3)記憶體洩露分為兩種:訪問了已經釋放的記憶體或者訪問了沒有許可權的記憶體

4)出現原因:不良的編碼習慣。

5)避免野指標的方法

2>為指標分配記憶體空間

#include

#define max_len sizeof(char) * 100

int main()

free(ptr);

ptr = null;     //防止ptr變成野指標

}eg:

int num = 0x12345678;

int * p= #

char *ptr = p;

printf("%x\n",*ptr);

這樣不好列印,因為為不同型別,char所指向的記憶體空間的值最多放1;

可以這樣:printf("%x\n",*(int*)ptr);     強制轉換為int*型別

也可以這樣:void *ptr = p;    void*為萬能指標,但是void*不可進行取值操作,所以對ptr做取值操作是不可以的

eg:int a[10];

int *p = &a[0];

int *ptr = &a[8];

ptr - p = 7;

a[8]——a[0]之間有7個數

C語言的指標

如果乙個指標變數存放的又是另乙個指標變數的位址,則稱這個指標變數為指向指標的指標變數。在前面已經介紹過,通過指標訪問變數稱為間接訪問。由於指標變數直接指向變數,所以稱為 單級間址 而如果通過指向指標的指標變數來訪問變數則構成 二級間址 從下圖可以看到,name是乙個指標陣列,它的每乙個元素是乙個指標...

C語言的指標

const與指標 遵循靠近誰就修飾誰的原則 1.const int p 靠近所以修飾指標所指向的值,因而指標指向的值不可以修改。但是原來變數可以修改,只是不能用 p修改而已 2.int const p 和上面一樣。3.int const p 靠近變數本身,所以指標位址不能修改。4.const int...

C語言的指標

目錄 一 位址 指標 二 指標變數 指標變數的運算 指標和陣列名 指標作為函式形參 三 指標型別 常見指標 陣列指標 二級指標 二維陣列指標 指標陣列 指標函式 函式指標 計算機中所有的資料都必須放在記憶體中,為了正確地訪問這些資料,必須為每個位元組都編上號碼,每個位元組的編號是唯一的,根據編號可以...