1.一维数组的创建和初始化
1.1数组的创建
数组是一组相同类型的元素的集合。
数组的创建方式:
type_t arr_name [const_n]
//type_t是指数组的元素类型,const_n是用来指定数组的大小
数组创建,【】中要给一个常量才可以,常量表达式也可;不可使用变量。
1.2数组的初始化
数组的初始化是指:在创建数组的同时给数组的内容一些合理初始值(初始化);
初始化的类型分为以下:
int arr【10】={1,2,3};//不完全初始化,剩余元素默认初始化为0;
int arr2【5】={1,2,3,4,5};//完全初始化
int arr4【】={‘a’,98,‘c'};//98是值得ASCII码值,可以查出是b字母
char arr6【】=“abcdef“;//根据初始化大小来分配
注意:
arr5【】={0};//只有一个元素
arr6【10】={0};//有10个元素
char arr1【】=”abc“;//默认数组里面有\0;
char arr2【】={’a‘,’b‘,’c‘};//里面没有\0
1.3一维数组的使用
让我们来看一个代码吧,打印出arr【】内容以及倒序打印出arr【】的内容
从上面的两个例子我们可以知道:
1.数组是使用下标来访问的,下标是从0开始的
2.数组的大小可以通过计算得到:int sz=sizeof(arr)/sizeof(arr[0]); 我们在之前的博客里面有讲到哦~
1.4 一维数组在内存中的存储
接下来让我们探讨数组在内存的存储吧~
输出的结果如下:
可以看到,每个数组的地址均相差4,是因为int整型是占4字节一个地址
在图中我们可以得到结论:
1,数组在内存中是连续存放的
2,随着数组下标的增长,元素的地址也有规律的递增(从低到高)
2,二维数组的创建和初始化
二维数组如果初始化(第一个【】代表行,第二个【】代表列),行可以省略,列不可以省略(行,列的下标都是从0开始)
2.3二维数组的使用
让我们看一个例题吧~
2.4二维数组在内存中的存储、
实际上,二维数组是这样存放的
由上面两个图可以知道,二维数组在内存中也是连续存储的。二维数组其实是一维数组的数组。随着数组下标的增长,元素的地址也有规律的递增(从低到高)
3.数组越界
数组的下标是由范围限制的。
数组的下标规定是从0开始的,如果数组由n个元素,最后一个元素的下标是n-1;
所以数组的下标如果小于0;或者大于1,就是数组越界访问了,超出了数组合法空间的访问。
c语言中本身不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错并不意味这是正确的。
所以程序员写代码时,最好自己做越界的检查。
i<=20,就已经说明了数组越界,输出结果是错误的
4,函数作为函数参数
首先,我们来探讨一下数组名是什么?
数组名是数组首元素的地址(有两个例外)
1.sizeof(数组名),计算整个数组的大小,数组名表示整个数组
2.&数组名,取出的是数组的地址。&数组名,数组名表示的是整个数组
4.3 冒泡排序函数的正确设计
好啦~本期数组的内容就讲到这里了~谢谢大家观看哦~