struct Student { char* name; int number; char csex; }stu, *stu;这段代码正确吗?
时间: 2024-09-21 20:08:54 浏览: 35
C语言变长数组 struct中char data[0]的用法详解
5星 · 资源好评率100%
这段代码在语法层面上并不完全正确,虽然大部分现代编程环境可能会容忍这种写法,但它并不推荐。`struct Student` 定义了一个名为 `Student` 的结构体,包含三个成员:`name`、`number` 和 `csex`。接下来有两个声明:
1. `stu` 是一个 `struct Student` 类型的变量,意味着它有自己的内存空间来存储这三个成员的数据。
2. `*stu` 则是一个指向 `struct Student` 的指针,即它是一个变量,用于存储 `struct Student` 类型的对象的地址。
然而,将两者放在一起声明并赋空值,如 `struct Student stu, *stu;`,实际上可能导致混淆。通常不会这样同时声明两个变量,除非有特殊的目的,比如在一个函数内部局部作用域里分别初始化一个实例和一个指针。更标准的做法是分开声明,如下所示:
```c
struct Student stu;
struct Student *stu;
```
或者只声明一个,然后根据需要动态分配另一个:
```c
struct Student *stu = NULL; // 或者 malloc(sizeof(struct Student));
```
阅读全文