高中数学中把一些元素组成的总体叫做集合。而数组就是类似集合,把相同数据类型的元素组成在一起。比如数组中存储整型(int)或者字符类型(char)等等。
接下来,让我们了解如何定义一维数组(还有二维数组目前只讲一维数组)。如图:
这里 int 是说明数组存放的是整型类型,arr1,arr2,arr3是数组名,[ ] 是下标引用操作符,{ } 是
代码块定界符。
第一种定义方式,是在 [ ] 中输入存放数据类型的个数,在 { } 中写入值(前面存放多少个数这里写入多少个值)。
第二种定义方式,是只写 数组名 加 [ 个数 ],这里系统会自己赋随机值。
我们打开调试看一下:
注:看到上面调试结果,大家有没有发现下标引用操作符的下标是从零开始是增长的。意思是
arr[0]=1;//下标零的位置是数组第一个数
arr[1]=2;//下标一的位置是数组第二个数
......
arr[9]=10;//下标九的位置是数组第十个数
第三种定义方式,是没有写输入存放数据类型的个数,但是系统会根据你赋值的个数,系统会计算出个数。
我们再打开调试看一下:
我们再用 sizeof 操作符计算一下:
注:sizeof(arr3)计算的是整个数组的大小,存放十个整型的数组,一个整型是四个字节,整个数组大小为四十个字节。sizeof(arr3[0])是一个整型大小(四个字节)。这样就算出存放数据类型的个数。
我们再来看一下由第一个定义方式衍生出来的第四第五两种定义方式:不完全赋值。
int arr4[10] = { 0 };
int arr5[10] = { 1,2,3,4,5 };
这里没有赋值的数还是随机值吗?
我们还是打开调试看一下:
没错,这里的系统赋值为 0.
为什么会有这样差异?
其实我们在定义数组时,是向内存申请了一块空间。但是申请的那块空间原来是有主人的,说明那块空间原来就存放着 其他值。在没有初始化时,系统提供的就是随机值(类似于全局变量没有初始化默认值为0,局部变量没有初始化默认值为随机值)。
打个比方,有一个仓库(空间),主人现在把仓库卖给你(申请空间),但是仓库里有杂七杂八的东西(有默认值),在你装修仓库时,是不是先把仓库打扫干净(全部初始化为0)再放东西(赋值)。
强调:定义数组时 arr[ ] 中写入存放数据类型的个数时不能为变量,必须为常量。
否则编译器会报错。
定义必须为常量,但是使用时可以为变量。
列如:遍历数组。
数组我们介绍完了,接下来,我们再了解变量和常量。
变量是指可以变的量。可以向象征变量的字母赋值。
列如:把 10 赋值给 x。(x=10)
int a=10;//定义一个整型变量,变量名为 a,把 10赋值给 a。
常量是不变的量。不能把数字赋值给数字。
列如:把 10赋值给 11。这是不可能的事情。
接下来介绍 const 关键字,它修饰的变量被称为常变量。
const 修饰变量 x 使其拥有常属性,无法被再次修改。
x 既然拥有常属性 ,能不能定义一个数组。如:
const int x=10;
int arr[x];
可不可以呢?
答案是不可以。
虽然 x 具有了常属性,但它本质还是变量,所以叫它常变量。
然后我们再了解 预处理指令(我们以#为开头的称为预处理指令,之前导入的头文件就是预处理指令) 定义的常量。(定义在头文件的下面 和 main函数的上面)
#define M 10
这里 M 的值是10。
这个常量是可以用来定义数组的。如下:
最后我们再了解枚举常量。
enum 是一个关键字,枚举常量是可以一一列举的常量。
这里定义一个颜色(color),颜色(color)可能取值是你自己定义的颜色,这里我选择了三个颜色(红,蓝,黄)。
注意:每一个枚举常量用(,)隔开,最后一个不加 (,)。
然后定义一个枚举类型的变量:
这里枚举类型的变量 t 的可能取值只能为上面所选择的三个颜色中的一个。
既然是常量肯定有值,那么 red 等于多少?blue 等于多少?yellow 等于多少?
值是从零开始一直往后增加。(没有赋初值的情况下)
如果为 red 赋值,答案又是多少?
如果为 blue 赋值呢?
这是赋初值,但是如果在 main 函数修改值,还是不行的。因为这是常量。
以上便是本章节的全部内容了。
如有错误,请与斧正!