问题描述:
根据下列代码和结果回答下列问题。
// Created by 黑马程序员.
#include "iostream"
using namespace std;
int main()
{
struct Student
{
string name; // 成员1,姓名
string major_code = "003032"; // 成员2专业代码,拥有默认值003032
int dormitory_num = 1; // 成员3宿舍楼号,默认是1号楼
};
struct Student s1 = {"周杰轮"};
struct Student s2 = {"林军杰", "003001", 3};
cout << "学生1的姓名:" << s1.name << endl;
cout << "学生1的专业代码:" << s1.major_code << endl;
cout << "学生1的宿舍楼号:" << s1.dormitory_num << endl;
cout << endl;
cout << "学生2的姓名:" << s2.name << endl;
cout << "学生2的专业代码:" << s2.major_code << endl;
cout << "学生2的宿舍楼号:" << s2.dormitory_num << endl;
return 0;
}
D:\CLion_code\cmake-build-debug\CLion_code.exe
学生1的姓名:周杰轮
学生1的专业代码:003032
学生1的宿舍楼号:1
学生2的姓名:林军杰
学生2的专业代码:003001
学生2的宿舍楼号:3
Process finished with exit code 0
结构体成员的默认值是如何使用的呢?可以对默认值进行修改吗?
问题解答:
在C++中,结构体成员可以在定义时指定默认值。默认值的使用方式和修改方式如下:
结构体成员默认值的使用
当定义一个结构体变量时,如果没有为某个成员显式赋值,那么该成员会自动使用结构体中定义的默认值。比如在你的代码中:
struct Student
{
string name; // 成员1,姓名
string major_code = "003032"; // 成员2专业代码,拥有默认值003032
int dormitory_num = 1; // 成员3宿舍楼号,默认是1号楼
};
在创建结构体变量时,如果没有为major_code
和dormitory_num
这两个成员赋值,它们将使用定义时的默认值:
struct Student s1 = {"周杰轮"};
struct Student s1 = {"周杰轮"};
这行代码只为 name
成员赋值为 "周杰轮"
,因此 s1.major_code
使用默认值 "003032"
,s1.dormitory_num
使用默认值 1
。
结构体成员默认值的修改
在创建结构体变量时,你可以显式地为所有成员赋值,这将覆盖默认值。例如:
struct Student s2 = {"林军杰", "003001", 3};
这行代码为 s2
的 name
成员赋值为 "林军杰"
,major_code
赋值为 "003001"
,dormitory_num
赋值为 3
,因此它们不会使用默认值,而是使用提供的这些值。
总结
- 使用默认值:当创建结构体变量时,如果某个成员没有显式赋值,将使用结构体定义中的默认值。
- 修改默认值:在创建结构体变量时,可以为成员显式赋值,这样将覆盖默认值。
在你的代码中,s1
的 major_code
和 dormitory_num
使用了默认值,而 s2
的这两个成员则使用了显式赋值的值。