對指標和函式指標定義別名涉及到優先順序,檢視《c語言宣告的優先順序》那篇
1、c語言typedef的用法詳解 (biancheng.net)
typedef char char20[20]; //char20是型別char [20]的別名。它是乙個長度為 20 的陣列型別
char20 a1, a2, a3, a4; //
char a1[20], a2[20], a3[20], a4[20]
#include typedef char (*ptr_to_addr)[30]; //執行結果:ptr_to_arr是二位陣列char *[30]的別名,是二維陣列指標型別
char str[3][30] =;
intmain()
}
hello world !2、typedef
void (* fun)(void)
fun是乙個變數,它是個指標,指向乙個函式,函式的引數和返回值都是空,fun是乙個指向引數和返回值都為空的函式指標。
type void (* fun)(void)是函式指標的型別定義,代表了一種新的型別,宣告一種void (*)(void)型別的函式指標fun。
typedef為現有型別建立乙個新的名字,typedef能隱藏笨拙的語法構造以及平台一些相關的資料型別,增強**可維護性、可移植性、可讀性
#include
typedef void (*ptr_to_fun)(int, int); //ptr_to_fun是乙個函式指標
void max(int a, int b)
int main()
結果:
203、typedef 和 #define 的區別
typedef 是在編譯過程中被解析的,而
#define
是在編譯之前的預處理階段處理的;#define
只是對所定義的別名的簡單替換,而typedef可以做到#define
能做到的所有事情,而且可以做得更好(1)可以使用其他型別說明符對巨集型別名進行擴充套件,但對 typedef 所定義的型別名卻不能這樣做
#define interge intunsigned interge n;(2)在連續定義幾個變數的時候,typedef 能夠保證定義的所有變數均為同一型別,而 #define 則無法保證//沒問題
typedef
intinterge;
unsigned interge n;
//錯誤,不能在 interge 前面新增 unsigned
#define ptr_int int *ptr_int p1, p2;//int *p1, p2;
typedef int *ptr_intptr_int p1, p2;
//int *p1, *p2;
typedef定義別名
問題 typedef int arr5 5 typedef arr5 p arr5 typedef p arr5 arrp10 10 arr5 togs togs是具有5個元素的int陣列?為什麼?p arr5 p2 p2是乙個指標,指向具有5個元素的int陣列 arrp10 ap ap是具有10個...
typedef 定義函式指標
typedef 返回型別 新型別 參數列 typedef char ptrfun int ptrfun pfun char glfun int a void main typedef的功能是定義新的型別。第一句就是定義了一種ptrfun的型別,並定義這種型別為指向某種函式的指標,這種函式以乙個int...
typedef 和 define定義別名的區別
typedef與 define 的區別 一 typedef的用法 typedef常用來定義乙個識別符號及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配記憶體空間,例項像 typedef int int typedef int array 10 typedef int pint typede...