C語言小知識 typedef 函式模板

2021-10-07 02:29:30 字數 1429 閱讀 7388

(1)typedef用法:

typedef為c語言的關鍵字,作用是為一種資料型別定義乙個新名字。這裡的資料型別包括內部資料型別(int,char等)和自定義的資料型別(struct等)。在程式設計中使用typedef目的一般有兩個,乙個是給變數乙個易記且意義明確的新名字,另乙個是簡化一些比較複雜的型別宣告。

//1、typedef的最簡單使用

typedef long byte_4;//給已知資料型別long起個新名字,叫byte_4。

//2、typedef與結構結合使用

typedef struct tagmystruct

mystruct;//這語句實際上完成兩個操作:1),2);

//1) 定義乙個新的結構型別

struct tagmystruct

;//分析:tagmystruct稱為「tag」,即「標籤」,實際上是乙個臨時名字,struct關鍵字和tagmystruct一起,構成了這個結構型別,不論是否有typedef,這個結構都存在。

//我們可以用struct tagmystruct varname來定義變數,但要注意,使用tagmystruct varname來定義變數是不對的,因為struct 和tagmystruct合在一起才能表示乙個結構型別。

//2) typedef為這個新的結構起了乙個名字,叫mystruct。

typedef struct tagmystruct mystruct;

因此,mystruct實際上相當於struct tagmystruct,我們可以使用mystruct varname來定義變數。

(2)函式模板與模板函式

這期間有涉及到函式模板與模板函式,類模板與模板類的概念 (類似於類與類物件的區別)

注意:模板類的函式宣告和實現必須都在標頭檔案中完成,不能像普通類那樣宣告在.**件中,實現在.cpp檔案中。

1、函式模板和模板函式

函式模板:函式模板的重點是模板。表示的是乙個模板,專門用來生產函式。

template

void fun(t a)

模板函式:是函式模板的例項化,是乙個函式。

fun(7);//隱式生成fun

fun(3.9);//隱式生成fun

fun(『b』);//隱式生成fun

shape* ps   =   new  cirlcle; 

fun(ps);//隱式生成fun

2、類模板和模板類

類模板:類模板的重點是模板。表示的是乙個模板,專門用於產生類的模子。

template

class vector 

; 模板類:類模板的例項化,是乙個包含具體資料型別的類

函式模板的例項化是由編譯程式在處理函式呼叫時自動完成的,而類模板的例項化必須由程式設計師在程式中顯式地指定。即函式模板允許隱式呼叫和顯式呼叫而類模板只能顯示呼叫。

C語言小知識 qsort函式

二 qsort函式用法 總結qsort是c中自帶的快速排序函式,屬於標準庫,在做演算法題時會比較常用。本文參考菜鳥教程。void qsort void base,size t nitems,size t size,int compar const void const void base 是指向要排...

C語言 小知識

1.表示式的求值 初始值 x 1,y 1 z 1 求 x y z 答 從左到右順序依次求值,1 true 注意 因為 操作符的左運算元是true,所以沒有必要求值了.事實上c語言肯定不會繼續求值 有關規則,在按從左到右的順序對乙個邏輯表示式求值的時候,只要知道了它的實際結果,就不會對其餘部分求值.這...

c語言小知識

1 為什麼include標頭檔案後,就可以呼叫檔案中宣告的函式了?標頭檔案中一般只是函式和變數的宣告,編譯器需要知道函式傳遞的是什麼引數,否則呼叫的地方 不知道如何設定暫存器和棧等一些相關資訊。至於函式的位置,由於在其他的編譯單元中,需要鏈結 時才能找到。標頭檔案中包含了函式的宣告,其具體的函式 即...