typedef 重命名结构体
时间: 2023-09-03 12:07:12 浏览: 248
要重命名一个结构体,可以使用`typedef`关键字。下面是一个示例:
```c
typedef struct {
int id;
char name[20];
} Person;
int main() {
Person p;
p.id = 1;
strcpy(p.name, "John");
printf("Person ID: %d\n", p.id);
printf("Person Name: %s\n", p.name);
return 0;
}
```
在上面的例子中,`typedef`关键字用于给结构体类型定义一个新的名称`Person`,以方便在代码中使用。这样,我们可以直接使用`Person`来声明结构体变量,而不需要每次都写完整的结构体声明。
相关问题
如何使用typedef重命名结构体和结构体的指针名?
在C语言中,`typedef`用于创建新的类型名,以便于给已存在的复杂类型(如结构体)起一个更易理解的名字。当你想要重命名一个结构体或者它的指针,你可以这样做:
1. **声明并重命名结构体**[^1]:
```c
// 原始无名结构体
struct Point {
int x;
int y;
};
// 使用typedef创建新名称
typedef struct Point {
int x;
int y;
} Point; // 新名称Point
// 现在可以使用Point代替struct Point
Point p; // 定义一个Point类型的变量
```
2. **重命名结构体指针**:
如果你有一个指向原始结构体的指针,可以这样重新命名它:
```c
// 原始无名指针
struct Point *originalPtr;
// 通过typedef重命名指针类型
typedef struct Point *NewPointPtr; // 新名称NewPointPtr
// 创建新指针,现在它是NewPointPtr类型
NewPointPtr newPtr = &p; // 指向结构体p的指针
```
记住,`typedef`不会改变原有类型的底层实现,只是创建了一个新的名字来代表它。如果在内部结构体中直接使用了自身的类型,但试图使用typedef的别名,可能会导致编译错误,正如提示所说的那样。
用typedef重命名一个结构体,并在这个结构体中使用重定义后的结构体
typedef struct student{
char name[20];
int age;
float score;
}Student;
typedef Student NewStudent;
int main(){
NewStudent s1;
strcpy(s1.name, "Tom");
s1.age = 18;
s1.score = 90.5;
printf("Name: %s\n", s1.name);
printf("Age: %d\n", s1.age);
printf("Score: %.1f\n", s1.score);
return 0;
}
阅读全文