typedef struct Student{int a;}pStu;
然后直接这样用pStus,这是啥意思,pStu不已经是个结构体指针了吗
关于tyoedef 重定义结构体的使用问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
在C语言中,
typedef是一个预处理指令,用于为数据类型创建一个新的名字,以便于更简洁地引用它。在这个例子中,你定义了一个新的类型别名Stu和pStu。这里有一个详细的解释:- 首先,我们有结构体
Student的定义:
typedef struct Student { int a; } Stu;这表示创建了一个名为
struct Student的新结构体,其中包含一个整型变量a。然后,通过typedef关键字,我们将这个结构体类型命名为Stu。- 接下来,你也定义了另一个类型别名
pStu:
pStu;这里,你没有提供任何类型信息,但根据上下文,我们可以推断出
pStu应该是指向Stu结构体类型的指针。这是因为pStu在定义时紧随在Stu类型之后,通常人们会将它理解为指向Stu的指针。所以,实际上pStu就是Stu *的别名。这意味着你可以用pStu来声明指向Stu结构体的指针变量。- 当你想要直接使用
pStu声明一个变量时,例如pStu s,实际上是声明了一个指向Stu结构体的指针变量s:
pStu s;这里的
s可以被赋值为一个指向Stu结构体实例的地址,然后可以通过->运算符访问其成员。例如:Stu student = {42}; // 创建一个 Stu 实例并初始化 a 为 42 pStu s = &student; // s 指向 student printf("%d\n", s->a); // 输出 42总结一下,
typedef让你可以给现有的数据类型(包括自定义的结构体)取一个新名字。在你的例子中,Stu是struct Student的别名,而pStu被理解为Stu *的别名,即指向Stu结构体的指针。因此,可以直接使用pStu来声明指向Stu结构体的指针变量。解决 无用评论 打赏 举报 编辑记录- 首先,我们有结构体