C++结构体疑问:结构体数组定义、成员访问及值打印实现方法
C++结构体相关问题解答
问题1:代码定义的结构名称及是否为结构体数组
你给出的代码首先定义了名为person的自定义结构体类型,同时在定义类型的语法后直接声明了该类型的数组employee,它确实属于结构体数组。
C/C++支持在定义结构体、联合体等自定义类型的同时,直接声明对应类型的变量、指针或数组,此处的employee是长度为2的person类型数组,初始化时按顺序填充了两个person实例的成员值。
问题2:访问结构内部数据成员的方法
访问结构体成员分两种场景:
- 对于结构体普通实例,使用
.成员访问运算符,语法为实例名.成员名 - 对于结构体指针,使用
->成员访问运算符,语法为指针名->成员名
你代码中的employee是结构体数组,需要先通过下标定位到数组内的具体结构体实例,再用.运算符访问成员,比如employee[1].empid就对应第二个实例的empid成员,值为4。
问题3:打印成员值的实现方式
直接通过employee数组打印
你可以遍历数组下标,逐个访问成员打印,参考代码如下:
#include <iostream> #include <string> using namespace std; struct person { string name; int salary; int empid; } employee[] = { { "abc", 1, 2 }, { "klm", 3, 4 } }; int main() { // 计算数组长度 int len = sizeof(employee) / sizeof(employee[0]); for (int i = 0; i < len; i++) { cout << "第" << i+1 << "个员工:姓名=" << employee[i].name << " 薪资=" << employee[i].salary << " 工号=" << employee[i].empid << endl; } return 0; }
运行后会输出两个员工的所有信息,包括你要的abc、klm等name值。
通过单独结构体变量打印
你可以将数组中的结构体实例赋值给自定义的同类型变量,再通过变量访问成员打印,示例代码:
person tmp = employee[0]; cout << tmp.name << endl; // 输出abc
内容的提问来源于stack exchange,提问作者jayanth vutukuri
相关产品推荐
相关产品推荐

