typedef 及其與struct的結合使用

2022-05-31 09:36:09 字數 2377 閱讀 3559

1

//相當於為現有型別建立乙個別名,或稱型別別名。2//

整形等3 typedef int

size;45

6//字元陣列

7char line[81];8

char text[81];//

=>

910 typedef char line[81

];11

line text, secondline;

1213

14//

指標15 typedef char *pstr;

16int mystrcmp(pstr p1, pstr p2);//

注:不能寫成int mystrcmp(const pstr p1, const pstr p3);因const pstr p1解釋為char * const cp(不是簡單的替代)

1718

19//

與結構型別組合使用

20 typedef struct

tagmystruct

21 mystruct;//

(此處mystruct為結構型別別名)=>

2526

struct

tagmystruct

27;//

+31 typedef struct

tagmystruct mystruct;

3233

34//

結構中包含指向自己的指標用法

35 typedef struct

tagnode

36 *pnode;//

=>error

40//

1)41 typedef struct

tagnode

42 *pnode;

46//

2)47 typedef struct tagnode *pnode;

48struct

tagnode49;

53//

3)規範

54struct

tagnode55;

59 typedef struct tagnode *pnode;

6061

62//

與define的區別

63//

1)64 typedef char* pstr1;//

重新建立名字

65#define pstr2 char *//

簡單文字替換

66pstr1 s1, s2;

67 pstr2 s3, s4;=>pstr2 s3, *s4;

68//

2)define定義時若定義中有表示式,加括號;typedef則無需。

69#define f(x) x*x=>#define f(x) ((x)*(x))

70main( )

7176

//3)typedef不是簡單的文字替換

77 typedef char *pstr;

78char

string[4] = "

abc";79

const

char *p1 = string;80

const pstr p2 = string;=>error

81 p1++;

82 p2++;

8384

//1) #define巨集定義有乙個特別的長處:可以使用 #ifdef ,#ifndef等來進行邏輯判斷,還可以使用#undef來取消定義。

85//

2) typedef也有乙個特別的長處:它符合範圍規則,使用typedef定義的變數型別其作用範圍限制在所定義的函式或者檔案內(取決於此變數定義的位置),而巨集定義則沒有這種特性。

1//2

//c中定義結構型別

3 typedef struct

student

4stu;//

申明變數stu stu1;或struct student stu1;7//

或8 typedef struct

9stu;//

申明變數stu stu1;

1213

//c++中定義結構型別

14struct

student

15;//

申明變數student stu2;

1819

20//

c++中使用區別

21struct

student

22stu1;//

stu1是乙個變數 。訪問stu1.a

2526 typedef struct

student2

27stu2;//

stu2是乙個結構體型別 訪問stu2 s2; s2.a=10;

30//

還有待增加。

函式指標與typedef

一 簡單的函式指標的應用。形式 1 返回型別 函式名 參數列 char pfun int char glfun int a void main 第一行定義了乙個指標變數 pfun 首先我們根據前面提到的 形式 1 認識到它是乙個指向某種函式的指標,這種函式引數是乙個 int型,返回值是 char 型...

函式指標與typedef

關於c 中函式指標的使用 包含對typedef用法的討論 一 簡單的函式指標的應用。形式1 返回型別 函式名 參數列 char pfun int char glfun int a void main 第一行定義了乙個指標變數pfun。首先我們根據前面提到的 形式1 認識到它是乙個指向某種函式的指標,...

typedef 用法與陷阱

首先來看乙個宣告 typedef int myfunc const char const struct stat int 怎麼理解吶?myfunc const char const struct stat int 是int,是不是有點問題。這就是對typedef的理解出了問題。之前見到的都是type...