struct Person { char name[20]; int age; }person1; 这样的格式有问题吗
时间: 2024-04-28 21:26:34 浏览: 8
这种格式是可以的。这是将结构体的定义和全局变量的声明合并到了一起,可以简化代码。这种写法中,结构体名 Person 作为类型名,表示定义了一个类型为 Person 的结构体,同时也声明了一个全局变量 person1,其类型为 Person。这种写法在结构体较简单时可用,但当结构体过于复杂时,不建议使用这种写法,因为可能会导致代码难以阅读和维护。
相关问题
struct { char name[20]; int age; }person; 这样的格式有问题吗
这种格式也是可以的。这是匿名结构体的定义方式,不需要使用结构体名进行定义,而是直接在定义变量时定义结构体。这种写法在结构体较简单且只需要定义一个变量时可用,但是不推荐在程序中频繁使用匿名结构体,因为不易于维护。同时,由于匿名结构体没有结构体名,因此无法在其他地方重复使用该结构体。如果需要在其他地方重复使用该结构体,则需要使用普通结构体定义方式。
struct { char name[20]; int age; }person; person person1= { 0,0 };这样的格式有问题吗
这个格式有问题,因为在给person1赋值时,使用了错误的初始化方式。应该按照结构体定义的顺序,先给name赋值,再给age赋值。
另外,结构体定义应该放在函数外部,以避免重定义错误的问题。
正确的格式应该是这样的:
```c++
#include <cstring>
struct Person {
char name[20];
int age;
};
Person person1 = {"", 0}; // 或 Person person1 = {0},可以省略初始化为 0 的元素
int main() {
// 给 person1 赋值
std::strcpy(person1.name, "John");
person1.age = 25;
return 0;
}
```
这样就定义了一个名为Person的结构体,包含name和age两个成员变量。同时,person1也被正确地初始化为{name: "", age: 0}。在main函数中,使用了strcpy函数给person1的name赋值为"John",并给age赋值为25。