结构体指针转换结构体类型
时间: 2023-08-09 11:04:35 浏览: 118
关于结构体指针类型的强制转换
结构体指针转换为结构体类型可以使用类型转换操作符 `(type)`。以下是一个示例代码:
```c
#include <stdio.h>
typedef struct {
int id;
char name[20];
} Student;
int main() {
Student student;
Student* studentPtr = &student;
studentPtr->id = 100;
strcpy(studentPtr->name, "John");
// 结构体指针转换为结构体类型
Student convertedStudent = *(Student*)studentPtr;
printf("ID: %d\n", convertedStudent.id);
printf("Name: %s\n", convertedStudent.name);
return 0;
}
```
在这个例子中,我们定义了一个 `Student` 结构体,并声明了一个指向 `Student` 类型的指针 `studentPtr`。然后,我们给 `studentPtr` 所指向的结构体成员赋值。接下来,我们使用类型转换操作符 `(Student*)` 将结构体指针 `studentPtr` 转换为 `Student` 类型,并将转换后的结果赋值给 `convertedStudent` 变量。最后,我们打印出转换后的结构体的成员。
请注意,在进行结构体指针转换时,确保指针指向的内存块是正确的结构体类型,否则可能会导致未定义的行为和错误。
阅读全文