由typedef定義的變量類型僅限于已定義的函數或文件。但是,如果要在其他文件中使用typedef定義的變量類型,通常會將typedef聲明放在一個單獨的文件(導入頭文件)中,使用時使用#include命令導入該文件。Typedef用于聲明新的類型名,而不是原始的類型名。例如,typedefintINTERGER或typedeffloatREAL相當于用INTERGER表示int類型,用REAL表示float。在c語言中,習慣用大寫字母表示用
#define是C中定義的語法,typedef是C中定義的語法,兩者都可以在C中使用,但是#define變成了預編譯指令,typedef被當作語句。
1.首先,執行時間不同。
關鍵字typedef在編譯階段是有效的,所以typedef因為是在編譯階段,所以具有類型檢查的功能。
Define是一個宏定義,發生在預處理階段,也就是編譯之前,它只執行簡單機械的字符串替換,不做任何檢查。
2.不同的功能
Typedef用于定義類型的別名,不僅包括內部類型(int,char等。),還包括自定義類型(如struct),這樣可以使類型容易記憶。
#
函數指針和指針函數的區別
1.名稱解析。這兩個名詞都是帶修飾語的名詞,可以稍微擴展一下,中間加一個助詞。現在看函數的指針和指針的作用,稍微清楚一點。現在擴展一下,加一些修飾符——函數的指針和返回值是指針的函數現在基本清楚了。
2.格式。
類型(*pfunc)(類型para)-函數指針。
type*func(typepara)-指針函數。
3.讓讓我們先來談談指針函數。其實就是一個普通的函數,只不過返回值是一個指針(其實是一個地址)。很多人覺得很神秘是因為怕指針!
4.函數指針。這個有點復雜。首先,*和pFunc先組合,優先級最高,所以PFunc是指針,同時這個指針后面帶了一對括號,里面有參數,和函數的參數格式一樣,所以這個指針是函數指針,這個指針前面有一個類型——返回值類型!有些人覺得這里很陌生。為什么指針會返回值?
5.指針有返回值是因為在使用的時候會指向一個和自己格式相似的函數,所以指針的返回值和參數格式決定了被指向函數的格式!
6.函數指針要精通,而且必須精通,因為函數指針的使用體現了C語言中的關聯特性,也是C語言中多態性的雛形!