/**
* c语言typedef关键字
* typedef 作为c语言中常见的关键字,
* 用法有多种,经常用来改变或者说给一种类型另取一个名字
*/
#include <cstdio>
int main() {
//先理清一个概念
int num;
//上面这个最简单的变量声明中,应该这样来看
//int是类型
//num是变量
//即类型:用来描述这个变量的数据类型
//变量:用来储存具体数据
typedef int yuan; //yuan RMB的单位,这里直接将int整型改了一名字叫yuan
yuan price=10; //让price价格为10,意思上就是说十元
printf("%d",price);//注意输出的时候其实还是用的%d,当然c++里的cout其实搭配typedef更好就不用%d了
typedef int kg,g;//可以同时给int类型取两个名字分别是重量单位kg和g
g w1=10;
kg w2=100;
printf("%d,%d",w1,w2);//同样的输出
typedef int *z;
/**
* 上面这个语句中有个*号
* 其实在c语言中,可以把*号和前边的int合在一起看作该类型的指针
* 例如单语句int *x; 代表声明了一个整型指针x
* 而typedef int *z则代表z是int *的别名,
* 即若此时我声明 z x; 则x即为一个整型指针,即int *x;
*/
typedef int *a,b,*c;//同样这样写也合法,其中a为int * b为int c和a一样都是int *
//暂且把上边这个例子叫做例子四
struct N{
int x;
}N1,N2,N3,NArray[10];
/*
struct结构体关键字用来声明一个结构体类型
若在结构体后边有字符串例如上边这个例子
则代表N1,N2,N3是类型为该结构体的一个变量
NArray为一个元素类型为该结构体即struct N类型的一个数组
这里实际上应该把struct N类比成int 注意struct N这两个单词才能类比成int
单独的一个N严格来说并不是一个类型,
这个例子我们记为例子五
*/
typedef struct Node
{
int x;
/*x为成员变量*/
}Node,*NodeList;
/*
*而上边这个例子的结构体前有个typedef
*typedef就是给类型另取名字用的
*上个例子说 struct Node是一个类型,既然是类型,就可以用typedef重新取名字
*所以这里的最后的Node和*NodeList实际上和上边例子四的用法一致,而不是和例子五相同
*即Node是struct Node这个类型的一个别名,而NodeList就是 struct Node *这个指针类型的一个别名
*同样的 Node * 也是struct Node *类型的别名,即Node *这个类型和NodeList这个类型相同
*/
}
基础C语言之Typedef和struct的结合使用
最新推荐文章于 2025-05-22 17:17:54 发布