C语言数组核心知识点
C语言数组是固定长度、同类型元素的连续内存存储结构一旦定义长度不可修改元素类型必须统一索引从0开始是C语言最基础的存储结构之一。一、定义规则格式为「数据类型 数组名[数组长度]」长度必须是常量不能用变量定义例int arr[5]、char str[10]、float sc[3]。二、三种初始化方式完全初始化指定所有元素未指定的位置不会留空例int arr1[5]{1,2,3,4,5}部分初始化未指定的元素自动赋值为0例int arr2[5]{1,2}剩余三个元素均为0省略长度编译器根据初始化元素个数自动确定长度例int arr3[]{10,20,30}长度为3。字符数组特殊初始化用双引号初始化会自动加字符串结束标志’\0’例char str1[]“hello”长度为6用大括号逐个初始化无’\0’例char str2[]{‘h’,‘e’,‘l’,‘l’,‘o’}长度为5。三、元素访问与遍历访问格式数组名[索引]索引范围0到「长度-1」例arr[0]是第一个元素arr[4]是长度为5的数组的最后一个元素严禁越界访问否则会读取垃圾内存导致程序异常计算长度技巧用sizeof(数组名)/sizeof(数组名[0])总字节数除以单个元素字节数避免硬编码长度遍历方式常用for循环按索引遍历也可通过指针遍历数组名本质是首元素地址*(指针i)等价于数组名[i]。四、二维数组二维数组的打印和输入可理解为“数组的数组”类似表格有行和列定义格式「数据类型 数组名[行数][列数]」例int arr[2][3]代表2行3列的二维数组初始化可按行大括号嵌套也可直接按顺序初始化未指定元素自动为0例int arr[2][3]{{1,2},{3}}剩余元素均为0访问格式「数组名[行索引][列索引]」行和列索引均从0开始遍历需双层for循环外层遍历行内层遍历列。五、数组传参特点C语言中数组传参不会传递整个数组只会传递首元素的地址形参写「数组名[]」或「指针」效果一致传参后在函数内用sizeof无法获取原数组总长度需单独将数组长度作为参数传入函数。六、核心注意事项长度固定定义后无法扩容或缩容索引从0开始越界访问是常见错误编译器不会报错但运行会出问题字符数组要区分是否有’\0’无’\0’的字符数组不能用字符串处理函数如strlen、printf(“%s”)数组名是常量地址不能直接赋值例arr{1,2,3}是错误写法只能逐个修改元素。