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