Skip to content
On this page

C语言一维数组


标签:clang/basic  

一维数组

例如, int arr[5]; 这是一个数组的声明表达式 , 需要注意 :

  1. 中括号中四不准 : 不为 0 , 不为空 (如果直接初始化可以) , 不为小数 , 不为变量[^1]
  2. 数组一旦被定义 , 其大小不能改变
  3. 下标范围为 0 ~ n-1 上面的第二点和 JavaScript 的数组又不太一样 , 所以 C 语言编程更吃数据结构的基本功 .

初始化

  1. 全部初始化, 例如 : int arr[3] = {1, 2, 3};
  2. 部分初始化, 例如 : int arr[3] = {1}; , 其他位子上会用 0 自动初始化 ;
  3. 部分初始化 ( C99 ) , 例如 int arr[4] = { [2] = 3 }; , 只有arr[2] 有初始值 3 , 其他为 0 ;
  4. 特殊初始化, 例如 : int arr[] = {1, 2, 3}; , 编译器能够从赋值上知道数组大小 ;

数组元素调用

arr[0] 可以调用数组的元素 , 它和一般的变量没什么区别 .

数组越界

在调用 arr[0] 这样的元素的时候 , 是可以调用到超出下标边界的元素的 , C 语言不会检查下标是否越界 .

⛔ 注意

  • 不能使用另一个数组来初始化数组 , 例如 int a[2] = {1,2}; int b[2] = a; 是错误的 !
  • 用数组变量赋值数组变量也是错误的 !
  • 数组变量不能作为函数的参数和返回值 !

在 C 语言中有一个规则 : 当数组作为右值使用的时候 , 自动转换成指向数组首元素的指针.

[^1]: 在 C99 中支持变量作为数组长度进行声明的 , 即变长数组 ( Variable Length Array ) , 但它语法复杂 , 限制性大 , 性能开销大 , 所以不推荐使用 .

Last updated: