指標宣告示例:
0.const char * char_p; <==> char const * char_p;
解析: 指標所指的物件是唯讀的,但是指標是可以修改的。
1.char * const char_p;
解析:指標所指的物件是可以修改的。但是指標是唯讀的。
2.const char * const char_p;
解析:指標與指標所指的物件都是唯讀的
3. char * char_p;
解析:指標與指標所指的物件都是可以修改的的
4.char * char_p[20]
解析: char_p是乙個陣列,每乙個元素為char *
5. char (*char_p)[20];
解析: char_p是乙個指標,指向乙個含有20個char的陣列;
6. int(*fun())();
解析:fun為乙個函式,返回乙個函式指標。
7.int(*fun());
解析:fun為乙個函式,返回乙個int型別的陣列
8.int(*fun)();
解析:fun為乙個陣列,每乙個元素為乙個函式指標。
9.char * const * (*next)()
解析:fun是乙個函式指標,返回乙個指向(指向char型別的常量指標)的指標。
10. char* (*
cc[10]
)(int **p);
解析:cc是乙個陣列,每乙個元素為接受乙個int**的引數,返回char* 的函式
11. void ( *
signal(int, void(*func)(int))
)(int)
解析:signal是乙個函式。
signal 的引數為:int和乙個函式指標。 該函式指標指向乙個接受int型別引數返回void型別的函式
signal的返回值為乙個函式指標,該函式指標為:乙個接受int型別引數返回void型別的函式
c語言宣告的優先順序規則:
0.宣告從它的名字開始分析,然後按照優先順序順序依次讀取。
1.優先順序高迪依次是:
00 宣告中被括號括起來的部分
01 字尾操作符:
括號()表示乙個函式,方括號表示乙個陣列
02 字首操作符:星號*表示「指向...的指標」
2. 如果const和volatile關鍵字後面緊跟型別說明符(如long,int等),那麼它作用於型別說明符。在其他情況下,const和volatile關鍵字作用於它左邊緊鄰的指標星號(*)。
typedef關鍵字
typedef類似於巨集文本替換-它並沒有引入新型別,而是為現有型別取乙個新名字。
tpedef的格式與變數宣告完全一樣,只是多了typedef關鍵字,向你提醒它的實質。
示例:typedef void(*ptr_to_func)(int);
void ( *
signal(int, void(*func)(int))
)(int) --> ptr_to_func signal(int,ptr_to_func);
建議:0.不要在乙個typedef中放入多個宣告,如下所示:
typedef int * ptr,(fun)(),array[5];
ptr 是「指向int的指標」型別
fun是「指向返回值為int的函式的指標」型別
array是「長度為5的int型別陣列」型別
1.不要將typedef嵌入到宣告中間部分。
typedef與巨集文本替換的區別:
0.可以使用其他型別說明符對巨集型別名進行擴充套件,但對typedef所定義的型別名卻不能這樣做。
#define peach int
unsigned peach i ; //沒問題
typedef int banana;
unsigned banana i;// 錯誤!非法
1.在連續幾個變數的宣告中,用typedef定義的型別能夠保證宣告中所有的變數均為同一種型別,而用#define定義的型別則無法保證。
#define int_ptr int * 經過巨集擴充套件
int_ptr chalk,cheese; --------> int * chalk,cheese;
chalk和cheese為不同型別,chalk是乙個指向int的指標,cheese則是乙個int
typedef char * char_ptr;
char_ptr bently,rolls_royce;
bently,rolls_royce 型別相同,都是指向char的指標。
typedef使用情況:
0.陣列,指標及函式的組合。
1.可移植型別。typedef unsigned int size_t;
2.為強制型別轉換提供乙個簡單的名字。
3.避免在用在struct結構定義中。struct定義中,始終使用結構標籤,即使它並非必須。這種做法可以使**更清晰。
C 指標的學習 3 指標與函式
1.函式指標 函式的指標 位址 乙個函式在編譯時被分配給乙個入口位址,這個入口位址就稱為函式的指標。在c 中可定義乙個指標變數,用它指向函式,然後通過改指標呼叫此函式。這種變數稱為函式指標變數,簡稱函式指標。定義格式如下 資料型別 函式指標名 引數型別表 注意括號的位置!區別於指標函式的定義。注意 ...
目標檢測的基本問題一 指標問題mAp和FPS
主要指標是map和fps map 首先iou 精度precision 和召回率recall 1.根據iou計算tp,fp 首先我們計算每張圖的pre和label的iou,根據iou是否大於0.5來判斷該pre是屬於tp還是屬於fp。顯而易見,pre1是tp,pre2是fp,pre3是tp。2.排序 ...
C 之父力作學習筆記3 指標
由於工作需要轉成了c 好久沒有學c 了,之前學了一段時間的c 也寫過兩篇,放在部落格園裡的,現在有專門的c 部落格,以後就在這裡寫了。以下是前兩篇的位址 c 之父力作學習筆記1 c 之父力作學習筆記 今天來簡單說一下指標,可以說指標是乙個難點,是一把雙刃劍,也許高手才能運用自如,像我這樣的菜鳥就會傷...