数组是一组相同类型元素的集合
一,数组的创建方式:
type_t arr_name[const_n];
//type_t是指数组的元素类型//arr_name是数组名称
//const_n是一个常量表达式,用来指定数组的大小
注意:部分编译器支持C99语法,数组大小可为变量表达式(变长数组)
二,数组的初始化:
完全初始化:int arr[5] = {1,2,3,4,5};
不完全初始化:int arr[5] = {1,2,3};//数组存放{1,2,3},剩余空间以0填充
数组初始化后,数组可根据初始化内容,确定数组大小,则数组大小可以省略
int arr[5] = {1,2,3,4,5}; 等价于 int arr[] = {1,2,3,4,5};
字符数组的初始化
char ch[5] = {'a','b','c'};//数组存放 {'a','b','c'},剩余空间以/0即0(\0的ASCII值)填充
char ch[] = {'a','b','c'};//数组存放 {'a','b','c'}
字符串的初始化
char ch[5] = "abc";//a b c \0 \0
char ch[] = "abc";//a b c \0
注意:字符数组char ch1[] = {'a','b','c'};//a b c
字符串char ch2[] = "abc";//a b c \0
字符数组ch1不默认添加'\0' 。向后打印ch1时,从首元素'a'开始打印(数组名相当于首元素地址),当打印完'c'后,未遇到字符串结束标志'\0' ,继续向后打印,直到在内存中找到'\0' ,停止打印,而"烫烫烫烫烫烫烫烫烫烫烫烫烫烫蘟bc"就是该过程中打印出的随机值。
字符串ch2默认添加'\0' 。向后打印ch2时,从首元素'a'开始打印,当打印完'c'后,遇到字符串结束标志'\0' ,停止打印。
求字符串长度同理
整型数组无'\0'
三,一维数组的使用:
下标引用操作符—— []
1,数组使用下标进行访问,下标从0开始。
2,数组的大小可以通过计算得到。
int sz = sizeof(arr) / sizeod(arr[0]);
四,一维数组在内存中的存储
注意:
每一个整型元素在内存中占四个字节,所以两个整型元素空间中间差的空间大小也为四个字节(一个字节给一个地址)
结论:1,一维数组在内存中是连续存放的。
2,随着数组下标的增长,地址是由低到高变化的。
%x —— 按十六进制打印
%p —— 按地址的格式打印 —— 十六进制的打印