typedef关键字总结

一.概述:

        我们可以使用typedef关键字为各种数据类型定义一个新名字(别名)。



二.typedef的使用:


1.简单使用:

        


        

跟原来的基本类型是完全一样的。


2.在别名基础上再起别名:



3.typedef 与指针:





4.使用typedef给结构体起别名




也可以这样:



也可以省略结构体的名称。



5.结构体与指针:



6.typedef与枚举类型:




7.typedef与指向函数的指针:


给指向函数的int指针类型,起了个别名叫MySum,被指向的函数接收2个int类型的参数,返回值为int类型。



三.typedef与#define对指针类型对不同

typedef char *String1;
int main(){
String1 str = "hello world";
}

#define String2 char *
int main(){
String2 str = "hello world";
}

这两个定义是不一样的,但运行效果都是一样的:定义了一个字符串“hello world”;


第一段代码,用typedef给char * 定义别名为String

第二段代码,用宏名代替 char *


这样好像看不出,它们区别何在!!!

看例子:

typedef char *String1;

#define String2 char *;
int main(){

String1 str1,str2;
String2 str3,str4;
return 0;
}

总共定义了 4 个变量,

注意:在这种情况下,只有str1、str2、str3才是指向char类型的指针变量,str4只是个char类型变量。


原因:

我们如果连续声明两个int类型的变量,我们可以这样写:

int a,b;

相当于

int a;
int b;

以此类推:

typedef char *String1;

String1 str1,str2;

等于:

char *str1;
char *str2;



再看看宏定义情况:

#define String2 char *

String2  str3,str4;

因为宏定义纯粹的是字符串替换,用char * 代替String2

所以等于:

char *str3,str4;

其实也就相当于:

char *str3;
char str4

可以看出,只有str4是基本数据类型,str1、str2、str3都是指针类型。

所以,以后给类型起别名,最好使用typedef,而不是使用#define



猜你喜欢

转载自blog.csdn.net/null959_/article/details/80660798