typedef关键字

【1】typedef关键字有何作用?

typedef通常被用于以下三种目的:

<1> 为了隐藏特定类型的实现,强调使用类型的目的。

<2> 简化复杂的类型定义,使其更易理解。

<3> 允许一个类型用于多种目的,同时使得每次使用该类型的目的明确。

【2】关于typedef使用应该注意哪些问题?

(1)typedef使用举例。示例代码如下:

 1 #include<iostream>
 2 using namespace std;
 3 void main()
 4 {
 5     typedef char* charPtr;
 6     charPtr ch, ch1;                 //char *ch, char *ch1
 7     char   *ph1 = ch;                   //OK!!!!!!
 8     char   *ph2 = ch1;                  //Ok!!!!!!
 9     char    String[4] = "abc";
10     const  char  *p1 = String; 
11     const charPtr p2 = String;       //相当于char * const p2 (注意差别)
12     p1++;
13     *p2 = 'a';
14     //p2++;                          //error!!!!!!p2为常量
15 }

(2)宏替换与typedef的区别

 1 //宏替换与typedef的区别:
 2 #include<iostream>
 3 using namespace std;
 4 
 5 #define  charPtr  char* 
 6 void main()
 7 {
 8     charPtr ch,ch1;         //char *ch,ch1//ch相当于指针 ch1相当于变量
 9     char   String[4] = "abc";
10     const char *p1 = String;
11     const charPtr  p2 = String; //const char * p2 
12     p1++;      //const修饰*p1
13     p2++;      //const修饰*p2
14     *p1='a';   //error!!!!!!!!!
15 }

(3)typedef使用分类

 1 #include<iostream>
 2 using namespace  std;
 3 
 4 typedef int *PINT;               //PINT    在此代表 int * 
 5 typedef int Array[10];           //Array   在此代表类型  int []  
 6 typedef int (*pfn)(int,int);     //pfn     在此代表一种函数指针类型
 7 void main()
 8 {
 9     Array a,b;
10     pfn c,d;
11 }

 (4)typedef特殊情况

 1 #include <iostream>
 2 using namespace std;
 3 
 4 typedef struct
 5 {
 6     int m_a;
 7     int m_b;
 8 } ABC, DEF, FGH; // ABC、DEF、FGH均为类型名称
 9 
10 void main()
11 {
12     cout << "sizeof(ABC) :: " << sizeof(ABC) << endl; // 8
13     cout << "sizeof(DEF) :: " << sizeof(DEF) << endl; // 8
14     cout << "sizeof(FGH) :: " << sizeof(FGH) << endl; // 8
15 }
16 // run out:
17 /*
18 sizeof(ABC) :: 8
19 sizeof(DEF) :: 8
20 sizeof(FGH) :: 8
21 */

 (5)待续.....

Good Good Study,Day Day Up.

顺序 选择 循环 总结

作者:kaizen
声明:本文版权归作者和博客园共有,欢迎转载。但未经作者同意必须保留此声明,且在文章明显位置给出本文链接,否则保留追究法律责任的权利。
签名:顺序 选择 循环
原文地址:https://www.cnblogs.com/Braveliu/p/2840341.html