> 一級指標
> 二級指標
> 一維陣列
> 二維陣列
> 指標和陣列的關係
> 指標陣列
> 陣列指標
> 函式指標
一:一級指標:
此圖對應的**是:
#include
int main()
指標存在原因是什麼?
乙個小的單元是乙個位元組
對於32位機器,假設有32根位址線,那麼位址是:
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000001
……11111111 11111111 11111111 11111111
那麼就有2^32個位址
在32位機器上,乙個位址大小是4個位元組,64位機器上,乙個位址大小是8個位元組。
注:1.指標是為了存放位址,位址是為了標示一塊位址空間。
2.指標讓位址有地方存放,指標讓記憶體的訪問變得便捷。
3.指標的大小在32位平台是4位元組,在64位是8個位元組。
指標型別
char* p = null;
int* p = null;
short* p = null;
long* p = null;
float* p = null;
double* p = null;
指標是有型別的:type+*的方式。
不同的型別指標是為了存放不同型別變數的位址。
這樣做是為了:確定了指標運算的規律,定出了一定的規則。
指標型別是通過:
1.指標+-整數;
2.指標的解引用
來確定指標的運算規律。接下來我一一舉例:
指標+-整數:
#include
int main()
它的執行結果是:
可見:指標的型別決定了指標向前或向後走一步的距離。
指標的解引用:
指標的型別決定,對指標解引用能操作幾個位元組。
二.二級指標:
首先任何值都有位址 ,一級指標的值雖然是位址,但這個位址做為乙個值亦需要空間來存放,是空間就具有位址 ,這就是存放位址這一值的空間所具有的位址,
二級指標
就是為了獲取這個位址。 ——《搜狗百科》
int a = 10;
int * pa = &a;
int** ppa = &pa;
請看此圖:
關於二級指標的運算:
1.*ppa:通過對ppa中位址進行解引用,找到了pa:
. int x = 0;
*ppa = &b;
2.**ppa通過*ppa找到pa,再*pa找到a:
*ppa = 30;
關於一維陣列和二維陣列,前面在《**陣列》一文中已經提到。
接下來介紹指標陣列,陣列指標與函式指標:
一:指標陣列:
首先我要明確乙個概念:指標陣列是陣列!
指標陣列是陣列,是乙個存放指標的陣列。
以下:int* arr1[10]
char* arr2[5];
char **arr3[6];都是指標陣列
另外:char* arr[3] = ;也是正確的:
注:計算時:
sizeof(arr); 大小是12,共有三個位址
strlen(arr); 大小是隨機值
二.陣列指標:
同樣的道理,陣列指標是指標!
是指向陣列的指標。
int (*p)[10];
//解釋:p和*先結合,表示p是乙個指標,是指向乙個大小為10個整形的陣列。
型別是:int (*) [10]
陣列指標如何使用?
這裡我們可以看出,陣列的位址和陣列首元素位址的值相同,但是意義不同。
int (*p)[10] = &arr;
來儲存。
因為p是乙個陣列指標,存放陣列的位址最合適。
那麼,二維陣列傳參是怎麼做的?
了解了這些之後:
int arr[3];
int *p1[5]; //指標陣列
int (*p2)[5]; //陣列指標
int (*p3[5]) [3]; //存放陣列指標的陣列
三:函式指標
這兩個位址是test函式的位址,那麼位址如何儲存呢?
void test()
void (*pfun)();
pfun先和*結合,是指標,指標指向函式,指向的函式無引數,無返回值。
int (*parr[10])();
parr先和結合,說明parr是陣列,陣列的內容是int(*)()型別的函式指標
指向函式指標陣列的指標:
int (*(*parr)[10])();
parr是乙個指標,該指標能指向乙個陣列,該陣列是乙個函式指標陣列,陣列的每個元素是乙個函式指標,
該函式指標能夠指向乙個引數是int,char,返回型別是void的乙個函式。
部分c語言知識總結
持續更新ing 1.extern關鍵字的作用 1.引用同乙個檔案中的變數 2.引用不同檔案中的變數 3.引用不同檔案中的函式 需要指明函式型別和返回值 2.全域性變數可不可以定義在可被多個.c 檔案包含的標頭檔案中?為什麼?答 可以,在不同的 c 檔案中以 static 形式來宣告同名全域性變數。可...
C語言基礎知識部分總結一
一 字元資料的非格式化輸入 getchar 讀取使用者的按鍵資訊,他的返回值是使用者按鍵的ascii碼 工作原理 呼叫getchar時,程式等待從緩衝區中取出第乙個字元 使用者輸入的字元存放在鍵盤緩衝區,直到使用者按回車鍵為止 如果使用者輸入的不止乙個字元,那麼其他的字元將留在鍵盤緩衝區,等待後續的...
C語言指標知識
c語言指標部分知識學習 指標是c語言的乙個重要概念,也是c語言的乙個特色。本次我們一起來了解c語言的部分指標知識。1.定義返回指標的函式 型別名 函式名 參數列列 float search float pointer 4 int n 2.關於運算子 的作用 pointer儲存著二維陣列number的...