You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:54:07