1. 一维数组
数组是构造数据类型之一
数组是一组相同类型元素的集合
- 数组: 有序数据的集合,用数组名标识
- 元素: 属同一数据类型,用数组名和下标确定
1.1 创建
数组的创建方式:
1. type_t arr_name [const_n]; 2. //type_t 是指数组的元素类型 3. //const_n 是一个常量表达式,用来指定数组的大小
数组创建的实例:
//代码1 int arr1[10]; //代码2 int count = 10; int arr2[count];//数组时候可以正常创建? //代码3 char arr3[10]; float arr4[1]; double arr5[20];
注:
1、数组必须 先定义,后使用
2、只能逐个引用数组元素,不能一次引用整个数组
3、数组元素表示形式: 数组名[下标] , 下标可以是常量或整型表达式
4 、 数组创建, [] 中要给一个 常量 才可以,不能使用变量
1.2 初始化
指在创建数组的同时给数组的内容一些合理初始值(初始化)
int arr1[10] = {1,2,3}; int arr2[] = {1,2,3,4}; int arr3[5] = {1,2,3,4,5}; char arr4[3] = {'a',98, 'c'}; char arr5[] = {'a','b','c'}; char arr6[] = "abcdef";
注:
1、数组不初始化,其元素值为 随机数
2、当全部数组元素赋初值时,可不指定数组长度
注意区分下面两个代码(内存中如何分配)
char arr1[] = "abc";\\结尾是'\0',占据内存空间是4个字节,数组长度是4个字节 char arr2[3] = {'a','b','c'};\\结尾是随机知道遇到'\0',占据内存大于3个字节,数组长度是3个字节
1.3 使用
操作符 [] :下标引用操作符,它其实就数组访问的操作符
#include <stdio.h> int main() { int arr[10] = {0};//数组的不完全初始化 //计算数组的元素个数 int sz = sizeof(arr)/sizeof(arr[0]); //对数组内容赋值,数组是使用下标来访问的,下标从0开始。所以: int i = 0;//做下标 for(i=0; i<10; i++) { arr[i] = i; } //输出数组的内容 for(i=0; i<10; ++i) { printf("%d ", arr[i]); } return 0; }
总结:
1. 数组是使用下标来访问的,下标是从0开始
2. 数组的大小可以通过计算得到
int arr[10]; int sz = sizeof(arr)/sizeof(arr[0]);
1.4 存储
#include <stdio.h> int main() { int arr[10] = {0}; int i = 0; for(i=0; i<sizeof(arr)/sizeof(arr[0]); ++i) { printf("&arr[%d] = %p\n", i, &arr[i]); } return 0; }
随着数组下标的增长,元素的地址,也在有规律的递增