C++初学(6)

6.1、数组

数组是基于C++基本整型和浮点类型创建的复合类型,它是一种数据格式、能够存储多个同类型的值。每个值都存储在一个独立的数组元素中,计算机在内存中一次存储数组的各个元素。

要创建数组,可使用声明语句,应指出以下三点:

(1)存储在每个元素中的值的类型;

(2)数组名;

(3)数组的元素数。

在C++中,可以通过修改简单变量的声明,添加中括号(其中包含元素数目)来完成数组声明,例如,创建一个months的数组,有12个元素,都可以存储一个short类型的值:

short months[12];

通用格式是这样:

typeName arrayName[arraySize];

表达式arraySize指定元素数目,它必须是整型常数或const值,也可以是表达式(如8*sizeof(int)),准确来说,arraySize的值不能是变量。

注:months的类型不是“数组”,而是“short数组”。强调months数组是使用short类型创建的。

访问数组元素方法是使用下标或索引来对元素进行编号。C++数组从0开始编号,一定是从0开始!!!C++使用带索引的方括号表示法来指定数组元素。例如,months[0]是months数组第一个元素,months[11]是months数组最后一个元素。

注:编译器不会检查使用的下标是否合法。你可以给设定元素数目大小外的数组进行赋值,但是会引发问题,因此必须确保下标有效。

6.1.1、程序说明

#include <iostream>
int main()
{
	using namespace std;
	int yams[3];
	yams[0] = 7;
	yams[1] = 8;
	yams[2] = 6;

	int yamcosts[3] = { 20,30,5 };

	cout << "Total yams = ";
	cout << yams[0] + yams[1] + yams[2] << endl;
	cout << "The package with " << yams[1] << " yams costs ";
	cout << yamcosts[1] << " cents per yam.\n";
	int total = yams[0] * yamcosts[0] + yams[1] * yamcosts[1];
	total += yams[2] * yamcosts[2];
	cout << "The total yam expense is " << total << " cents.\n";

	cout << "\nSize of yams array = " << sizeof yams;
	cout << " bytes." << endl;
	cout << "\nSize of one elements = " << sizeof yams[0];
	cout << " bytes." << endl;

	return 0;
}

程序说明:

该程序创建了名为yams的包含3个元素的数组。每个元素都是int类型,通过索引给3个元素分别赋值。程序给yams的元素赋值时,绕了个大弯。如:

int yamcosts[3]={20,30,5};

只需提供一个用逗号分隔的值列表(初始化列表),并将它们用花括号括起来即可。如果没有初始化函数定义中定义的函数,则其元素值将是不确定的,这意味着元素的值为以前驻留在该内存单元的值。

sizeof运算符返回类型或数据对象的长度(单位为字节)。注意,如果将sizeof运算符用于数组名,得到的是整个数组中的字节数。但如果将sizeof用于数组元素,则得到的将是元素的长度(单位为字节)。这表明yams是一个数组,而yams[0]只是一个int变量。

6.1.2、数组的初始化规则

只有在定义数组时才能使用初始化,此后将不能使用,也不能将一个数组赋给另一个数组,然而可以使用下标分别给数组中的元素赋值。

初始化数组时,提供的值可以少于数组的元素数目,例如:float yuanshi[4]={5.0,2.5}。

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

(2)如果将数组第一个元素初始化为0,其他元素也会被初始化为0;

(3)如果初始化为{1},则第一个元素被设置成1,其他元素都被设置为0.

(4)如果初始化数组时方括号内([ ])为空,C++编译器将会计算元素个数。例如:

short xingsheng[]={1,6,7,9};

编译器将使xingsheng数组包含4个元素。

  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值