typedef重定义结构体
时间: 2023-12-25 21:30:07 浏览: 142
typedef关键字在C语言中可以用来为结构体定义别名。通过使用typedef,我们可以为结构体类型定义一个新的名称,以便在后续的代码中使用这个新的别名来声明变量,而不需要重复写整个结构体的名称。
下面是一个示例,演示了如何使用typedef重定义结构体:
```c
#include <stdio.h>
// 定义一个结构体
struct student {
char name[20];
int age;
};
// 使用typedef为结构体定义别名
typedef struct student Student;
int main() {
// 使用新的别名声明结构体变量
Student s1;
// 访问结构体成员并赋值
strcpy(s1.name, "John");
s1.age = 20;
// 打印结构体成员的值
printf("Name: %s\n", s1.name);
printf("Age: %d\n", s1.age);
return 0;
}
```
在上面的示例中,我们首先定义了一个结构体`student`,然后使用typedef为它定义了一个新的别名`Student`。接下来,在`main`函数中,我们使用新的别名`Student`来声明了一个结构体变量`s1`。然后,我们可以通过这个变量来访问结构体成员,并对其进行赋值和打印输出。
相关问题
用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;
}
一个类型重定义的结构体怎么给另外一个类型重定义的结构体赋值
你可以通过使用赋值运算符(=)将一个类型重定义的结构体赋值给另一个类型重定义的结构体。假设有两个结构体类型A和B,其中B是A的重定义类型。你可以像这样给B赋值:
```c
struct A {
int num;
char letter;
};
typedef struct A B;
int main() {
B b1;
b1.num = 10;
b1.letter = 'A';
B b2;
b2 = b1; // 将b1赋值给b2
return 0;
}
```
在上面的示例中,我们首先定义了一个结构体类型A,然后通过`typedef`将其重定义为B。我们创建了两个变量b1和b2,都是类型为B的结构体。然后,我们将b1的成员变量赋值为10和'A',然后将b1赋值给了b2,这样b2也拥有了与b1相同的值。
请注意,在这种情况下,仅仅是将结构体的值复制给另一个结构体,而不是共享内存或引用。因此,在对一个结构体进行修改时,不会影响到另一个结构体的值。
阅读全文