typedef常見用法(轉(zhuǎn))
1.常規(guī)變量類型定義
例如:typedef unsigned char
uchar
描述:uchar等價于unsigned char類型定義
uchar c聲明等于unsigned char
c聲明
2.數(shù)組類型定義
例如: typedef int
array[2];
描述: array等價于 int [2]定義;
array a聲明等價于int a[2]聲明
擴展: typedef int
array[M][N];
描述: array等價于 int [M][N]定義;
array a聲明等價于int
a[M][N]聲明
3.指針類型定義
例如: typedef int
*pointer;
描述: pointer等價于 int *定義;
pointer p聲明等價于int *a聲明
例如: typedef int
*pointer[M];
描述: pointer等價于 int *[M]定義;
pointer p聲明等價于int
*a[M]聲明明
4.函數(shù)地址說明
描述:C把函數(shù)名字當做函數(shù)的首地址來對待,我們可以使用最簡單的方法得到函數(shù)地址
例如: 函數(shù):int
func(void);
unsigned long funcAddr=(unsigned long)func;
funcAddr的值是func函數(shù)的首地址
5.函數(shù)聲明
例如: typedef int
func(void);
func等價于 int (void)類型函數(shù)
描述1: func f聲明等價于 int
f(void)聲明,用于文件的函數(shù)聲明
描述2: func *pf聲明等價于 int
(*pf)(void)聲明,用于函數(shù)指針的生命,見下一條
6.函數(shù)指針
例如: typedef int
(*func)(void)
描述: func等價于int (*)(void)類型
func pf等價于int
(*pf)(void)聲明,pf是一個函數(shù)指針變量
7.識別typedef的方法:
a).第一步。使用已知的類型定義替代typdef后面的名稱,直到只剩下一個名字不識別為正確
如typedef u32 (*func)(u8);
從上面的定義中找到 typedef __u32 u32;typedef __u8
u8
繼續(xù)找到 typedef unsigned int __u32;typedef unsigned char __u8;
替代位置名稱 typedef unsigned int (*func)(void);
現(xiàn)在只有func屬于未知
b).第二步.未知名字為定義類型,類型為取出名稱和typedef的所有部分,如上為
func等價于unsigned
unsigned int (*)(unsigned
char);
c).第三部.定義一個變量時,變量類型等價于把變量替代未知名字的位置所得到的類型
func f等價于unsigned
unsigned int (*f)(unsigned char)