C语言中的结构数组(C Primer Plus 第六版)

简介: C语言中的结构数组(C Primer Plus 第六版)

前言


这节会学到->运算符和struct结构 学完这些,再去学数据结构就很简单了! 加油!

资源在这

image.png


一、结构数组


实例

#include <stdio.h>
int main(void)
{
    struct book
    {
        char title[MAXTITL];
        char author[MAXAUTL];
        float value;
    };
    return 0;
}

学完这个就能学到->运算符了,学完它再去学数据结构就够了!真的令人兴奋啊!


1.1 声明结构数组


声明结构数组和声明其他类型的数组类似。下面是一个声明结构数组的例子:

struct book library [MAXBKS] ;

以上代码把library声明为一个内含MAXBKS 个元素的数组。数组的每个元素都是一个book类型的数组。因此,library [0]是第1个book类型的结构变量,library[1]是第2个book类型的结构变量,以此类推。参看图14.2可以帮助读者理解。数组名library本身不是结构名,它是一个数组名,该数组中的每个元素都是struct book类型的结构变量。

image.png


1.2 标识结构数组的成员


为了标识结构数组中的成员,可以采用访问单独结构的规则:在结构名后面加一个点运算符,再在点运算符后面写上成员名。如下所示: library [ 0 ].value //第1个数组元素与value相关联

library [ 4 ].title //第5个数组元素与title 相关联

注意,数组下标紧跟在library后面,不是成员名后面:

library.value [ 2] //错误 library [2] .valuel //正确 使用library[2] .value的原因是: library[2]是结构变量名,正如library[1]是另一个变量名。顺带一提,下面的表达式代表什么? library [2 ].title [ 4 ] 这是library数组第3个结构变量(library[2]部分)中书名的第5个字符(title[ 4]部分)。

image.png

书上写的太详细了!


1.3 结构数组的嵌套


struct names                    //定义结构体names
{
    char first[LEN];
    char last[LEN];
};
struct guy                      //定义结构体guy
{
    struct names handle;
    char favfood[LEN];
    char job[LEN];
    float income; 
};
//初始化数组
int main(void)
{
    struct guy fellow[2] = {    
        //这是一个结构嵌套,guy结构里嵌套了names结构
        //初始化结构数组fellow,每个元素都是一个结构变量
        {{"Ewen","Villard"},
        "girlled salmon",
        "personality coach",
        68112.00
        },
        {{"Rodney","Swillbelly"},
        "tripe",
        "tabloid editor",
        432400.00
        }
  };
}

应该很容易理解,在结构体gay里放了一个 names 结构体,然后就是赋值了


相关文章
|
4天前
|
C语言
四:C语言-选择结构
本篇文章详细讲述了C语言中的选择结构(if...else语句和switch语句)并附上多个代码示例
20 9
|
1天前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
1天前
|
C语言
【C语言刷题每日一题】一维数组的交换
【C语言刷题每日一题】一维数组的交换
|
1天前
|
C语言
【C语言基础篇】结构控制(上)顺序结构和选择结构
【C语言基础篇】结构控制(上)顺序结构和选择结构
|
1天前
|
存储 C语言
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
|
1天前
|
C语言
【C语言】:详解函数指针变量,函数指针数组及转移表
【C语言】:详解函数指针变量,函数指针数组及转移表
8 2
|
1天前
|
C语言
【C语言】:详解指针数组,数组指针及(二维)数组传参(2)
【C语言】:详解指针数组,数组指针及(二维)数组传参(2)
6 1
|
1天前
|
Serverless C语言
【C语言】:对(一维)数组与指针的深入理解(1)
【C语言】:对(一维)数组与指针的深入理解(1)
5 1
|
1天前
|
C语言
【C语言刷题系列】轮转数组
【C语言刷题系列】轮转数组
|
1天前
|
C语言
【C语言基础篇】结构控制(下)转向语句break、continue、goto、return
【C语言基础篇】结构控制(下)转向语句break、continue、goto、return