typedef struct 指针
时间: 2025-01-16 18:10:35 浏览: 33
关于 typedef
和结构体指针的用法
在 C/C++ 中,typedef
可用于简化复杂类型的声明。对于结构体及其指针的操作,这尤其有用。
使用 typedef
简化结构体定义
当定义一个结构体时,通常会遇到冗长的类型名。为了使代码更简洁易读,可以使用 typedef
来创建一个新的类型名称:
// 原始方式定义结构体
struct Student {
char* name;
int age;
};
// 使用 typedef 给 struct Student 创建别名
typedef struct {
char* name;
int age;
} STUDENT;
// 或者给带标签的结构体起别名
typedef struct _Student {
char* name;
int age;
} STUDENT_TAGGED;
上述例子展示了如何利用 typedef
减少重复书写 struct
的必要性[^1]。
结合 typedef
定义结构体指针
除了简化基本结构体类型的命名外,还可以进一步扩展到指针上:
// 直接为结构体指针设置别名
typedef struct Person_ {
char* name;
int id;
}* PERSON_PTR;
// 实际应用中可以直接使用PERSON_PTR作为Person结构体指针类型
void print_person_info(PERSON_PTR person){
printf("Name:%s ID:%d\n", (*person).name, (*person).id);
}
这里不仅减少了每次声明新变量时键入完整的 struct
字符串的需求,同时也让指针操作更加直观清晰。
示例程序展示综合运用
下面是一个完整的示例程序,它结合了前面提到的技术点——即通过 typedef
对结构体以及其指针进行了重命名处理,并演示了如何初始化和访问这些数据成员:
#include <iostream>
using namespace std;
// 定义带有匿名结构体的typedef
typedef struct {
string name;
int age;
float gpa;
} STUDENT_RECORD;
// 为结构体指针设定别名
typedef STUDENT_RECORD* P_STUDENT_RECORD;
int main(){
// 初始化结构体实例
STUDENT_RECORD student = {"Alice", 20, 3.7};
// 获取该记录的地址并传递给函数参数
P_STUDENT_RECORD ptr_student = &student;
cout << "Accessing via pointer:\n";
cout << "Name: " << ptr_student->name << "\nAge: "
<< ptr_student->age << "\nGPA: " << ptr_student->gpa << endl;
return 0;
}
此段代码首先引入了一个名为 STUDENT_RECORD
的自定义类型来代表学生的信息表单;接着又为其对应的指针形式设定了另一个便捷的名字 P_STUDENT_RECORD
。最后,在主函数里实现了对学生信息对象的实际操作过程。
相关推荐


















