***************************************************正文开始*************************************************
1、数组
1.1 数组的定义
数组是一组相同类型元素的集合。
1.2 为什么使用数组
A:我们创建少量(四五个)的变量时单个创建就可以了,但要是创建大量(十个、二十个、一百个)的相同类型的变量时一个个的定义太过麻烦,这时候我们就可以
2、一维数组
2.1 一维数组的创建
数组的创建方式:定义数组来表示。
type_t arr_name [const_n] //type_t 是指数组元素的类型 //const_n 是一个常量表达式,用来指定数组的大小
实例:
int arr[10]; char ch[15]; float arr2[20]; //以上实例的 [] 里面必须是常量
注:C99标准前,数组的大小必须是常量表法式。C99标准中,引入了变长数组的概念,变长数组中允许数组的大小用变量来指定。编译器要是不支持就使用不了,vs 编译器就是不支持。
gcc 是支持 C99 标准的:
但是变长数组是不能初始化的。
2.2 一维数组的初始化
数组的初始化是指,在创建数组的时候给数组的内容一些合理初始值(初始化)。
例如:
完全初始化:
int arr[10] = { 1,2,3,4,5,6,7,8,9,0 }; int arr2[3] = { 2,4,5 }; char arr3[3] = { 'a','b','c' }; char arr4[5] = "abcde";
不完全初始化:
int arr[10] = { 0 }; int arr2[3] = { 0,1 }; char arr3[3] = { 'a','b' }; char arr4[5] = "abc";
不完全初始化的数组,除了初始化的部分是指定的数字或字符,剩下的部分默认初始化为 0 或者字符 '\0' 。
如果数组初始化了,可以不指定数组的大小,数组大小会根据初始化来确定大小。
我们可以通过调试的监视窗口来看看没有初始化的部分:
我们再看看没有给定大小的数组在内存中怎样存储:
#include <stdio.h> #include <string.h> int main() { char arr[] = "abc"; int sz = sizeof(arr); int len = strlen(arr); printf("%d %d\n", sz, len); char arr1[] = { 'a', 'b', 'c' }; int sz1 = sizeof(arr1); int len1 = strlen(arr1); printf("%d %d\n", sz1, len1); return 0; }
效果展示: