600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > c语言中结构体数组的引用 【C语言入门教程】7.2 结构体数组的定义和引用

c语言中结构体数组的引用 【C语言入门教程】7.2 结构体数组的定义和引用

时间:2021-06-04 05:33:14

相关推荐

c语言中结构体数组的引用 【C语言入门教程】7.2 结构体数组的定义和引用

7.2 结构体数组的定义和引用

当需要使用大量的结构体变量时,可使用结构体定义数组,该数组包含与结构体相同的数据结构所组成的连续存储空间。如下例所示:

struct student stu_a[50]; // 声明长度为 50 的结构体数组 stu_a

引用结构体数组中元素的一般形式为:

结构体数组名[n].成员名

[] 符号的优先级与.符号相同,适用于自左向右结合性,所以运算时首先获得的是结构体数组的元素,然后再获得该元素的成员。如果该成员是数组,引用该成员数组元素的一般形式为:

结构体数组名[n].成员名[n]。同理,如果该成员是结构体变量,引用形式为:结构体数组名[n].成员.子成员。依次类推,如何复杂的成员都可以被访问。如下例所示:

#include

int main(void)

{

struct student

{

char name[50];// 姓名

char dept[50];// 专业

long no;// 学号

float score[4];// 成绩

};

struct student stu_a[2] = {

"Tom", "Math", 001, 87.5, 70.5, 93, 91,

"Jerry", "Math", 002, 90, 78.5, 83.5, 66

};

int i;

for (i = 0; i < 2; i++)

{

printf("%8s %8s %ld %5.2f %5.2f %5.2f %5.2f\n",

stu_a[i].name,

stu_a[i].dept,

stu_a[i].no,

stu_a[i].score[0],

stu_a[i].score[1],

stu_a[i].score[2],

stu_a[i].score[3]

);

}

}

程序中声明了结构体数组 stu_a[],并在声明时用数据为其初始化。然后用 printf() 函数将结构体数组中的数据输出。

【C语言入门教程】4&period;5 指针变量的定义与引用

指针变量是包含内存地址的变量.一般的变量直接包含一个特定的值,而指针变量包含的是某一特定数据类型的内存地址.普通变量直接引用其中的值,指针变量则间接引用所指向内存地址中的值.指针变量在使用前需要声明与 ...

【C语言入门教程】7&period;1 结构体类型变量的定义和引用

前面学习了变量和数组这些简单的数据结构,它们的特点是必须使用规定的数据类型.例如数组被定义为整型后,它的所有存储单元都是由整型构成.现实生活中某一类事物的共同属性可能是由不同的数据类型组成的集合,或者 ...

智能合约语言 Solidity 教程系列6 - 结构体与映射

写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 本系列文章一部分是参考Solidity官方文档(当前最新版 ...

【C语言入门教程】7&period;3 结构体指针的定义和引用

C 语言中指针的操作非常灵活,它也能指向结构体变量对结构体变量进行操作.在学习结构指针之前,需要再次加深对指针的认识.声明指针变量时所使用的数据类型修饰符实际上的作用是定义指针访问内存的范围,如果指针 ...

C语言应用--数据类型定制一结构体数组

结构体定义成功后,其实和c语言内部的类型区别也不大了,自然可以用来定义结构体类型的数组了.我们根据结构体定义的方式不同,分别用多种方式定义结构体数组:

C语言入门(15)——结构体与数据抽象

大多数的计算机运算是对现实世界的模拟,如果想用计算机来模拟现实世界需要用到数据抽象的方法.所谓抽象是从实际的人.物.事和概念中抽取所关心的共同特征,,忽略非本质的细节,吧这些特征用各种概念精确的加以描 ...

C语言入门(14)——结构体

整数.字符.布尔值.浮点数这些数据类型都具有单一的值,这些可称为基本数据类型.但字符串是一个例外,它由很多字符组成,像这种由基本类型组成的数据类型称为复合数据类型,正如表达式和语句有组合规则一样,由基 ...

【C语言入门教程】4&period;1 一维数组

数组与指针涉及到数据在内存中的存储位置问题,数组由连续的存储单元组成,最低地址对应于数组的第一个单元,最高地址对应于数组的最后一个单元.指针是一种特殊的变量,该变量所存放的是内存地址,通过指针变量可访 ...

【C语言入门教程】4&period;8 指针数组

指针数组是一种特殊的数组,这类数组存放的全部是同一数据类型的内存地址.指针数组的定义形式为: 数据类型 *数组名[长度]; 例如: const char *c[4] = { "China&q ...

随机推荐

what&&num;39&semi;s deviceone

DeviceOne技术介绍 一. DeviceOne是什么 DeviceOne(以下简称Do)是一个移动开发的平台或技术,与之对等的是Android移动开发技术,iOS移动开发技术,Windo ...

C&num;实现自动发送QQ消息

1.得打开需要发送的聊天窗口,最小化也可,聊天时不能是中文输入法2.然后AIO名就是窗口左上角的那个名称,括号和QQ号不要,那个名称可能是好友备注,群名称,讨论组名称等.3.发送消息要设置成按Ente ...

JavaScript Nested Function 的时空和身份属性

JavaScript 的function 不仅仅是一等公民,简直就是特殊公民.它有许多独特的特征: 1) 它是object,可以存储,传递,附加属性. 2) 它可以有lexical closure, ...

&lbrack;傻瓜版&rsqb; Redis在Windows下的开发环境配置步骤

redis默认运行在unix体系下,windows无法直接运行官方版.以下是几种解决方案, 一)Windows移植版.启动速度飞快,优先推荐使用. a)2.6.12 是稳定版,我用64位版来做开发环 ...

vue监听scroll使用报错的解决办法

错误说明:在切换路由以后,依旧在其他页面触发了scroll有关的函数, 错误原因:在spa项目中,window对象是不变的,所以每次使用后需要销毁. 解决办法:vue的生命周期destroyed中销毁 ...

PL&sol;SQL 实现行列转换

这篇博文写的是简单的行列转换的,以一个具体的例子来给出. 以前在论坛上有人问过相关的问题,上面的回答五光十色,有很多是可行的,当然更多的是自以为很高端,实际却不着边际的回答.下面进入正题. part1 ...

dump解析入门-用VS解析dump文件进行排障

突然有一天部署在服务器的一个应用挂掉了,没办法只能进入服务器打开 [事件查看器]查看下,好不容易找到了打开后一脸懵逼 事件查看器查到的内容根本对我们排障没有任何作用. 在这个时候如果有对应的dump文 ...

getElementsByClassName方法的封装

Element.prototype.getElementsByClassName = function(searchClass,node,tag){ if(document.getElementsBy ...

codeforce864d

D. Make a Permutation! time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。