结构数组的定义与运用

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
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
指针、数组结构和函数是 C 语言中非常重要的概念,它们的运用可以使程序更加高效和灵活。下面简单介绍一下它们的运用: 1. 指针:指针是一个变量,它存储的是一个内存地址。通过指针,可以访问和修改该地址上的数据。指针的运用可以实现动态分配内存、传递参数等功能。 示例代码: ``` int a = 10; int *p = &a; // 定义一个指向 int 类型的指针 p,并将其指向变量 a 的地址 *p = 20; // 修改指针所指向地址上的数据为 20 printf("%d\n", a); // 输出 20 ``` 2. 数组数组是一组相同类型的数据的集合,它们在内存中是连续存储的。通过数组下标,可以访问和修改数组中的元素。数组运用可以实现大量数据的存储和处理。 示例代码: ``` int arr[5] = {1, 2, 3, 4, 5}; for (int i = 0; i < 5; i++) { printf("%d ", arr[i]); // 输出数组元素 } ``` 3. 结构结构是一种自定义的数据类型,它可以存储多个不同类型的数据。结构运用可以实现复杂的数据存储和处理。 示例代码: ``` struct student { char name[20]; int age; }; struct student s = {"Tom", 18}; // 定义一个学生结构体变量 printf("%s %d\n", s.name, s.age); // 输出学生的姓名和年龄 ``` 4. 函数:函数是一段可重复使用的代码块,它可以接受输入参数,并返回输出结果。函数的运用可以实现代码的模块化和复用。 示例代码: ``` int add(int a, int b) { // 定义一个加法函数 return a + b; } int result = add(1, 2); // 调用加法函数进行计算 printf("%d\n", result); // 输出计算结果 ``` 以上是指针、数组结构和函数的简单运用示例,它们在实际开发中经常被使用,可以帮助程序更加高效和灵活。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值