结构体数组,结构体数组作为函数参数传递

http://www.itjxue.com  2023-01-06 18:11  来源:未知  点击次数: 

结构体数组定义和使用是什么?

结构体是一种构造数据类型也称复杂数据类型,由若干不同类型的变量数据组成。每个变量都是结构体的成员,每个成可以是基本数据类型,也可以是构造类型。

上面的代码定义了一个结构体,名字为stu。stu由4个成员组成,分别为 name、num、score。注意大括号后面的分号;不能少。结构体变量结构体也是一种数据类型,可以用来说明变量。

stu就像一个“模板”,定义出来的变量都具有相同的性质。也可以将结构体比作“图纸”,将结构体变量比作“零件”,根据同一张图纸生产出来的零件的特性都是一样的。

怎么学习c语言?

一个开发环境,例如turbo C 20,这个曾经占据了DOS时代开发程序的大半个江山。windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。

建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。

? 一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。

除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习。

只有读书做题这么老套。我向大家推荐一个集成学习环境(C语言),里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo C,初学者甚至不用装其它的编译器,就可以练习编程了。

结构体类型的数组

一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成绩等数据)。如果有10个学生的数据需要参加运算,显然应该用数组,这就是结构体数组。结构体数组与以前介绍过的数值型数组的不同之处在于:

每个数组元素都是一个结构体类型的数据,它们都分别包括各个成员项。 定义结构体数组和定义结构体变量的方法相仿,定义结构体数组时只需声明其为数组即可。如

{ int num;

char name[20];

char sex;

int age;

float score;

char addr[30];

};

Student stu[3];//定义Student类型的数组stu

也可以直接定义一个结构体数组,如

struct Student

{ int num;

char name[20];

char sex;

int age;

float score;

char addr[30];

}stu[3];

struct

{ int num;

char name[20];

char sex;

int age;

float score;

char addr[30];

}stu[3];

结构体数组的初始化与其他类型的数组一样,对结构体数组可以初始化。如

struct Student

{

int num;

char name[20];

char sex;

int age;

float score;

char addr[30];

}stu[3]={

{10101,″Li Lin″, ′M′, 18,87.5, ″103 Beijing Road″},

{10102,″Zhang Fun″,′M′,19,99, ″130 Shanghai Road″},

{10104,″Wang Min″,′F′, 20,78.5, ″1010 Zhongshan Road″}};

定义数组stu时,也可以不指定元素个数,即写成以下形式:

stu[ ]={{…},{…},{…}};

编译时,系统会根据给出初值的结构体常量的个数来确定数组元素的个数。

一个结构体常量应包括结构体中全部成员的值。当然,数组的初始化也可以用以下形式:

Student stu[ ]={{…},{…},{…}};//已事先声明了结构体类型Student

由上可以看到,结构体数组初始化的一般形式是在所定义的数组名的后面加上 ={初值表列}; 下面举一个简单的例子来说明结构体数组的定义和引用。

例7.2对候选人得票的统计程序。设有3个候选人,最终只能有1人当选为领导。今有10个人参加投票,从键盘先后输入这10个人所投的候选人的名字,要求最后输出这3个候选人的得票结果。可以定义一个候选人结构体数组,包括3个元素,在每个元素中存放有关的数据。

程序如下:

#include iostream

struct Person//声明结构体类型Person

{

char name[20];

int count;

}Person leader[3]={″Li″,0,″Zhang″,0,″Fun″,0};

//定义Person类型的数组,内容为3个候选人的姓名和当前的得票数

int main( )

{

int i,j;

char leader_name[20];

//leader_name为投票人所选的人的姓名

for(i=0;i10;i++) {cinleader_name;

//先后输入10张票上所写的姓名

for(j=0;j3;j++)//将票上姓名与3个候选人的姓名比较

if(strcmp(leader_name,leader[j].name)==0) leader[j].count++;

//如果与某一候选人的姓名相同,就给他加一票

}

coutendl;

for(i=0;i3;i++)//输出3个候选人的姓名与最后得票数

{coutleader[i].name″:″leader[i].countendl;}

return 0;

}

运行情况如下:

Zhang↙ (每次输入一个候选人的姓名)

Li↙

Fun↙

Li↙

Zhang↙

Li↙

Zhang↙

Li↙

Fun↙

Wang↙

Li:4 (输出3个候选人的姓名与最后得票数)

Zhang:3

Fun:2

程序定义一个全局的结构体数组leader,它有3个元素,每一元素包含两个成员,即name(姓名)和count(得票数)。在定义数组时使之初始化,使3位候选人的票数都先置零。

在这个例子中,也可以不用字符数组而用string方法的字符串变量来存放姓名数据,程序可修改如下:

#include iostream

#include string

using namespace std;

struct Person

{

string name;//成员name为字符串变量

int count;

};

int main( )

{

Person leader[3]={″Li″,0,″Zhang″,0,″Fun″,0};

int i,j;

string leader_name;// leader_name为字符串变量

for(i=0;i10;i++)

{

cinleader_name;

for(j=0;j3;j++)

if(leader_name==leader[j].name) leader[j].count++

//用“==”进行比较

}

coutendl;

for(i=0;i3;i++)

{coutleader[i].name″:″leader[i].countendl;}

return 0;

}

数组与结构体的区别

数组与结构体的主要区别如下:

1、定义不同

数组是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量;

结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。

2、数据类型不同

数组是相同类型元素(元素可以是原子类型的整型、浮点型、字符型或者结构体、数组等)的集合;

结构体是不同类型元素(元素可以是原子类型的整型、浮点型、字符型或者结构体、数组等)的集合。

3、调用方式不同

数组可以直接利用下标访问;

而结构体必须使用结构中成员的变量名。

参考资料来源:百度百科-数组

参考资料来源:百度百科-结构体

简述结构体与数组的异同

结构体与数组在概念上就完全不同,结构体是自定义数据类型,它包含的各种成员类型属于结构体各种属性的描述,例如:struct Student{int age;int height;char name[16]};结构体也可以包含数组。数组是同一类型的元素集合,例如:Student count[10];这就是结构体数组。数组概念是集合,结构体概念是数据类型,它们之间没有相同之处。

C语言结构体数组的定义

所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。

结构体可以存储不同的数据类型,将他们互相联系起来。结构体数组可以连续存储多个结构体,和数组作用相似。比如想定义同一个最小外接矩形的四个坐标值,并给予这个矩形一个特征编号。当需要存储多个最小外接矩形的信息时,就需要动态申请一个结构体数组。

struct 结构体类型名{类型名 成员名;类型名 成员名;……},先声明结构体类型,再定义结构体变量名。声明结构体类型,不分配空间,定义结构体类型变量,就要分配内存空间。

扩展资料:

结构体数组指针类型:

一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址,指针变量也可以用来指向结构体数组中的元素。

1、类型一:

指向结构体变量的指针引用结构体变量中的成员。

2、类型二:

用结构体变量和指向结构体变量的指针构成链表,链表是一种常见的重要的数据结构。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。

链表中的每一个元素称为“结点”,每个结点都应包括两个部分:

一是用户需要用的实际数据,

二是下一个结点的地址。

链表中各元素在内存中的存储单元可以是不连续的。要找某一元素,可以先找到上一个元素,根据它提供的下一元素地址找到下一个元素。这种链表的数据结构,必须利用结构体变量和指针才能实现。

可以声明一个结构体类型,包含两种成员,一种是用户需要用的实际数据,另一种是用来存放下一结点地址的指针变量。

参考资料来源:百度百科—结构体类型—数组

(责任编辑:IT教学网)

更多

推荐网络工程师文章