C++ | 数组、结构体

本文详细介绍了C++中的数组和结构体。数组是一种存储同类型元素的数据结构,包括声明、初始化规则及注意事项。结构体则提供了一种存储不同类型数据的方式,可以定义并初始化结构体,以及创建结构体数组。示例代码展示了如何定义和使用数组及结构体,包括结构体数组的声明和成员访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.数组 

1.1数组的声明

1.2数组的初始化规则

2.结构体

2.1定义结构

2.2结构初始化

 2.3结构数组


1.数组 

           是一种用于存储多个同类型的值的数据格式。

例如,数组可以存储30个int类型的值,其中,每个值都存储在一个独立的数组元素中,在计算机内存中依次存储数组中的各个元素。

1.1数组的声明

声明数组的通用格式为:

typeName arrayName [arraySize];

其中 typeName 是这组元素的数据类型,arrayName 是数组名,arraySize 是元素数目,它必须是整型常数(如 10)或 const 值,也可以是常量表达式(如 3*5 )。

我们可以单独访问数组元素,方法是使用下标或索引来对元素进行编号。C++数组从0开始编号,并且使用带索引的方括号表示法来指定数组元素。例如,我们声明创建一个名为 ragnar 的 int数组,该数组有7个元素:int ragnar[7];,则ragnar[0] 是ragnar数组的第一个元素,ragnar[6]是最后一个元素(参考下图),最后一个元素的索引比数组长度小 1。

 注意:编译器不会检查使用下标是否有效,但在运行程序后,这种赋值可能引发问题,也可能导致程序异常崩溃。所以必须确保程序只使用有效的下标值。

1.2数组的初始化规则

        ①  C++允许只有在定义数组时,才能使用初始化,此后就不能使用了,也不能将一个数组赋给另一个数组。

int cards[4] = {3,6,8,10};   //成功初始化

int hand[4];    //创建数组,未初始化

hand[4] = {5,6,7,8}   //语法错误

hand = cards;     //语法错误

       ②  C++可以使用下标分别给数组中的元素赋值。

int hand[4];   //声明创建hand数组
/* 使用下标给数组元素赋值 */
hand[0] = 5;
hand[1] = 6;

      ③  如果只对数组的一部分进行初始化,则编译器将把其他元素设置为0。

int arr[10] = {1,2,3};   //部分初始化

/* 意味着arr[3]~arr[9]的值均为 0 */

/*等价于*/

int arr[10] = {1,2,3,0,0,0,0,0,0,0};

/*将数组中所有元素都初始化为0*/

int arr2[10] = {0};

2.结构体

       虽然数组可以存储多个元素,但所有的元素的类型都必须相同。结构是一种比数组更加灵活的数据格式。 

2.1定义结构

      假如现在需要一种类型应存储产品的名称、容量和售价,那么我们就可以定义结构来满足需求:

struct product
{
  
    char name[20];    //名称
    flaot volume;     //容量
    double price;     //售价

};

 关键字 struct 声明,这段代码定义的是一个结构,标识符product 是结构的名称。

             name、volume、price 是结构体的成员,由大括号括起来,最后以分号结束结构声明。

2.2结构初始化

     和数组一样,使用由逗号分隔值列表 ,并将这些值用花括号括起来。

product guest = 
{
    "Glorious" ,  //产品名
    1.88,         //容量
    29.99          //价格

};

/*也可以将他们全部放在一行中*/

product guest = {"Glorious" ,1.88,29.99};

 2.3结构数组

     也可以创建元素为结构的数组

     例如,要创建一个包含一个10个  product  结构的数组,可以这样做:

product gifts[10];

 这样便定义了一个product 结构数组,其中的每个元素(如 gifts[0] 或 gifts[9])都是 product 的对象,可以与成员运算符一起使用:

cin   >>   gifts[0].volume;

cout  <<    gifts[8].name;

 注意:gifts本身是一个数组,而不是结构,所以像gifts.price 这样的表述是错误的。

以下代码是一个运用结构数组的简例:

#include<iostream>
using namespace std;

struct Person {
	char name[20];   //姓名
	char sex[4];     //性别
	int age;         //年龄
};
int main() {
	/*初始化*/
	Person person[2] = {
		{"张三","男",20},
		{"李四","女",19}
	};
	for (int i = 0; i < 2; i++) {
		cout << "第 " << i + 1 << " 个人的信息:" << endl;
		cout << "姓名:" << person[i].name << endl;
		cout << "性别:" << person[i].sex << endl;
		cout << "年龄:" << person[i].age << endl;
		cout << "----------------------------------" << endl;
	}
	system("pause");
	return 0;
}

 运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值