结构数组的定义与运用

文章详细介绍了C++中结构体数组的定义,包括全局和局部变量的区分。接着讨论了结构体数组的初始化,指出只能在定义时对多个元素初始化,之后可通过访问单个元素输入。还阐述了如何访问结构体数组的成员,以及使用指针操作结构体数组的方法。最后提到了结构体数组作为函数形参的使用,并警告不要返回局部变量的地址。
摘要由CSDN通过智能技术生成

1、结构体数组的定义

        以自定义类型的数组作结构变量,该数组中每一个元素都是相同的自定义结构,具有相同的结构成员。

        结构体数组在 结构体末尾定义函数外定义都为全局变量函数内定义局部变量

        例如,下面代码段,People[10] 与 Person[10] 为全局变量,而main函数中的 Someone[10]为局部变量。 

struct Node
{
    char name[20];
    char sex[10];
    int age;
}People[10];//全局

struct Node Person[10];//全局

int main()
{
    struct Node Someone[10];//局部

    return 0;
}

2、结构体数组的初始化与调用访问

1)初始化

        与普通数组初始化相似,只有在定义时初始化可对多个元素进行输入,其他时候只能通过访问输入 或 对单个元素进行输入

struct Node
{
    char name[20];
    char sex[10];
    int age;

    /*在定义时初始化*/
}People[10] = { {"张三","男",23},{"李四","女",25}};

struct Node Person[10] = { {"王五","男",33},{"路人","?",28} };

int main()
{
    struct Node Someone[10];
    Someone[1] = { "sad","sdd",34};
    Someone[2].name = "卡卡";

    return 0;
}

2) 调用访问

        访问结构体数组元素用,如:

Someone[2].name = "卡卡";
People[2].age

        当用一个指向结构体数组的指针时也可用“ —> ”,如:

struct Node* p, *q;
//q指向 结构数组Person的第2个元素
q = &Person[1];
        //访问输出:
cout << q->name << " " << q->age << endl;

//p指向 结构数组Someone
p = Someone;
        //访问输出:  Someone的第2个元素
cout << (p + 1)->name << " " << (p + 1)->age << endl;

3)结构体数组形参

        形参表中:自定义结构类型名 + 数组名[ ] 

void Visit(Node Someone[])
{
    cout << Someone[1].name << " " << Someone[1].age << endl;
}

  !!!注意:不要返回局部变量的地址,局部变量存放在栈区,栈区数据在函数执行完一次后                              编译器就会自动释放掉(虽然会做一次保留),如果再次访问该地址 或 该地址上的                          变量就会 出错。

E N D


代码用例:

#include<iostream>
#include<string.h>
using namespace std;

struct Node
{
    string name;
    string sex;
    int age;
}People[10] = { {"张三","男",23},{"李四","女",25}};

struct Node Person[10] = { {"王五","男",33},{"路人","?",28} };

void Visit(Node Someone[])
{
    cout << Someone[1].name << " " << Someone[1].age << endl;
}
int main()
{
    struct Node Someone[10];
    Someone[1] = { "瓦坎达啃大瓜","男",34};
    Someone[2].name = "卡卡";

    struct Node* p, *q;
    //q指向 结构数组Person的第2个元素
    q = &Person[1];
        //访问输出:
    cout << q->name << " " << q->age << endl;

    //p指向 结构数组Someone
    p = Someone;
        //访问输出:  Someone的第一个元素
    cout << (p + 1)->name << " " << (p + 1)->age << endl;
    Visit(Someone);
    return 0;
}

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值