為了方便訪問記憶體中的內容,給每乙個記憶體單元編號,我們稱這個編號為位址,也就是指標。
指標是一種資料型別 所以 指標有自己的記憶體 儲存的是編號(位址)
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] = ;cout<< char*型別指標<int* parr = arr;
此時會列印字串
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 和指標 指標是另外一種型別的復合型別,復合型別是指基於其它型別定義的型別 意思是說指標是指向什麼型別,那麼指標本身就是什麼型別 指標其實就是程式資料在記憶體中的位址,而指標變數是用來儲存這些位址的變數 記憶體是乙個很大的,線性的位元組陣列。每乙個位元組都...