成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++ typedef使用方法總結

開發 后端
C++ typedef就是類型定義,主要是把一種數據類型定義為某一個標識符,并且在程序開發中應用這一標識符來實現相應數據類型變量的定義。

C++編程語言中,有一種專門應對類型定義的用法,叫做C++ typedef。那么我們應該如何正確理解這一應用呢?在這篇文章中,我們會通過C++ typedef不同使用方法來對這一應用進行詳細介紹。

C++ typedef,顧名思義,為“類型定義”,可以解釋為:將一種數據類型定義為某一個標識符,在程序中使用該標識符來實現相應數據類型變量的定義。例如:

  1. typedef unsigned int UINT;  
  2. int main (int argc, char *argv[])  
  3. {  
  4. unsigned int a; // it’s OK  
  5. UINT b; // it’s OK, a and b are of the same type (int)  
  6. // . . . // code references the symbol a and b  
  7. return 0;  

上面的代碼中,a和b屬于同一種數據類型(unsigned int型),因為UINT標識符已經標示為unsigned int類型。上面的代碼看似簡單,相信很多讀者都用過這種方法,但這絕不是typedef的全部,下面介紹使用C++ typedef定義復雜數據類型的幾種用法。

1、定義結構體類型

結構體是一種較為常見的數據類型,在C/C++程序設計中使用的非常廣泛。下面的代碼就是結構體類型的一個應用:

  1. #include < iostream.h> 
  2. int main (int argc, char *argv[])  
  3. {  
  4. struct {int x; int y;} point_a, point_b;  
  5. point_a.x = 10point_a.y = 10;  
  6. point_b.x = 0point_b.y = 0;  
  7. ios::sync_with_stdio();  
  8. cout < <  point_a.x + point_a.y < <  endl;  
  9. cout < <  point_b.x + point_b.y < <  endl;  
  10. return 0;  

上面的代碼包含了兩個結構體變量:point_a和point_b,它們的數據類型相同,都是struct {int x; int y;}類型。這種說法可能有點別扭,習慣上說point_a和point_b都是結構體類型,為什么偏偏要說是struct {int x; int y;}類型呢?因為這種說法更加精確。比如在第一個例子中,對于“unsigned int a, b;”這條語句,我們可以說a和b都是整數類型,但更精確地說,它們應該是unsigned int類型。

既然struct {int x; int y;}是一種自定義的復雜數據類型,那么如果我們要定義多個struct {int x; int y;}類型的變量,應該如何編寫代碼呢?其實很簡單,就當struct {int x; int y;}是一個簡單數據類型就可以了:

  1. struct {int x; int y;} var_1; // 定義了變量var_1  
  2. struct {int x; int y;} array_1 [10]; // 定義了數組array_1  
  3. struct {struct{int x; int y;} part1; int part2;} cplx; 

上面的第三行定義了一個cplx變量,它的數據類型是一個復雜的結構體類型,有兩個成員:part1和part2。part1是struct {int x; int y;}類型的,part2是int類型的。

從上面的例子可以看出,如果在程序中需要多處定義struct {int x; int y;}類型的變量,就必須多次輸入“struct {int x; int y;}”這一類型名稱,況且,如果在結構體中有某個成員是struct {int x; int y;}類型的,還會使得定義變得非常繁雜而且容易出錯。為了輸入程序的方便,同時為了增強程序的可讀性,我們可以把struct {int x; int y;}這一數據類型定義為標識符“Point”,那么上面的程序就會變得更容易理解:

  1. typedef struct {int x; int y;} Point;  
  2. Point var_1; // 定義了變量var_1  
  3. Point array_1 [10]; // 定義了數組array_1  
  4. struct {Point part1; int part2;} cplx; // 定義了復雜類型變量cplx 

需要說明的是,我們還可以使用下面的方法來定義結構體變量:

  1. struct t_Point {  
  2. int x; int y;}; // 注意,這里最后一個分號不能省略  
  3. int main(int argc, char* argv[])  
  4. {  
  5. struct t_Point a, b;  
  6. // . . .  
  7. return 0;  

顯然,這種方法沒有C++ typedef更加直觀(在C++中,main函數第一行的struct關鍵字可以省略,但在標準C中,省略該關鍵字會出現編譯錯誤)。
此外,對于定義鏈接隊列中的結點,我們可以這樣實現:

  1. typedef struct t_node {  
  2. int Value;  
  3. struct t_node *next;  
  4. } Node;  
  5. 當然也可以這樣定義:  
  6. typedef strcut t_node Node;  
  7. struct t_node {  
  8. int Value;  
  9. Node *next;  
  10. }; 

2、定義數組類型

與定義結構體類型相似,可以使用C++ typedef來定義數組類型,例如:

  1. typedef int MyIntArray [100]; 

那么程序中的

  1. MyIntArray ia; 

就相當于

  1. int ia[100]; 

3、定義函數指針

看下面的代碼:

  1. typedef void (*FUNCADDR)(int) 

此處FUNCADDR是指向這樣一個函數的指針,該函數的返回值為void類型,函數有一個int型的參數。再例如:

  1. void print (int x)  
  2. {  
  3. printf (“%d\n”, x);  
  4. }  
  5. int main (int argc, char *argv[])  
  6. {  
  7. FUNCADDR pFunc;  
  8. pFunc = print; // 將指針指向print函數  
  9. (*pFunc)(25); // 調用函數print  
  10. return 0;  

函數指針一般用于回調函數、中斷處理過程的聲明,以及在面向對象程序設計中對事件處理過程的聲明。

4、定義類類型

類是面向對象程序設計語言中引入的一種新的數據類型,既然是數據類型,就可以使用C++ typedef對其進行定義:

  1. typedef class {  
  2. private:  
  3. int a;  
  4. public:  
  5. int b;  
  6. } MyClass; 

其實這和定義結構體類型非常相似,不過很少有人這么使用。

【編輯推薦】

  1. C++調用C鏈接庫具體應用技巧講解
  2. C++類成員相關應用方法介紹
  3. C++循環語句基本概念詳解
  4. C++運行機制簡單介紹
  5. C++鏈表操作實際應用技巧分享
責任編輯:曹凱 來源: 博客園
相關推薦

2010-01-26 17:35:09

C++棧

2010-02-04 10:52:36

C++字符串分割函數

2010-01-25 14:10:21

C++堆棧

2010-02-02 09:49:02

C++模板

2011-07-13 11:34:58

CC++時間函數

2023-09-12 07:38:36

C++getline函數

2010-03-10 19:18:10

Python scri

2011-05-17 16:20:46

C++

2011-03-30 10:41:11

C++數據庫

2024-01-23 10:48:44

C++函數重載開發

2010-01-27 15:54:49

C++實現程序

2010-01-25 13:19:44

C++詞法分析

2013-07-25 14:12:53

iOS開發學習UITableView

2018-08-28 12:24:56

ButterKnife框架插件

2023-09-13 14:42:08

typedefC++

2011-07-20 14:45:43

C++結構體

2010-02-06 09:59:54

C++ void使用規

2010-02-02 14:06:50

C++ const變量

2010-02-01 10:15:07

C++ TinyXML

2009-11-16 13:57:21

PHP上傳文件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人高清 | 亚洲啊v | 亚洲一区免费视频 | 在线观看视频亚洲 | 午夜综合| 一区二区三区免费 | 激情五月综合 | 亚洲午夜av久久乱码 | 日韩1区| 97精品国产97久久久久久免费 | .国产精品成人自产拍在线观看6 | 欧美精品一区三区 | 久久久久国产一区二区三区四区 | 精品一二区 | 我要看免费一级毛片 | 99re在线视频| 精品久久久久久久人人人人传媒 | 欧美日韩高清在线一区 | 欧美精品一二区 | 精品三级 | 欧美一级淫片免费视频黄 | 久久国| 欧美二区在线 | 日韩在线不卡 | 亚洲视频一区 | 最新一级毛片 | 欧美日韩中文字幕在线 | 国产一区二区三区四区hd | 亚洲国产欧美一区 | 国产视频观看 | www.亚洲| 日韩在线观看网站 | 成人a免费| 午夜视频网站 | 一区二区av | 欧美xxxx日本 | 91精品国产综合久久国产大片 | 亚洲国产精品一区二区久久 | 亚洲一区久久 | 欧美亚洲综合久久 | 一区二区三区高清 |