什么是数组

  • 数组是 C 语言中的一种数据结构,用于存储一组具有相同数据类型的数据。
  • 数组中的每个元素可以通过一个索引(下标)来访问,索引从 0 开始,最大值为数组长度减 1。

image.png

一维数组

数组的使用

  • 定义语法格式

    1. 类型 数组名[元素个数];
    2. int arr[5];
    • 数组名不能与其它变量名相同,同一作用域内是唯一的
    • 其下标从0开始计算,因此5个元素分别为arr[0],arr[1],arr[2],arr[3],arr[4]
  1. #include <stdio.h>
  2. int main() {
  3. // 定义了一个数组,名字叫a,有10个成员,每个成员都是int类型
  4. int a[10];
  5. // a[0]…… a[9],没有a[10]
  6. // 没有a这个变量,a是数组的名字,但不是变量名,它是常量
  7. a[0] = 0;
  8. // ……
  9. a[9] = 9;
  10. // 数据越界,超出范围,错误
  11. // a[10] = 10; // err
  12. for (int i = 0; i < 10; i++) {
  13. a[i] = i; // 给数组赋值
  14. }
  15. // 遍历数组,并输出每个成员的值
  16. for (int i = 0; i < 10; i++) {
  17. printf("%d ", a[i]);
  18. }
  19. printf("\n");
  20. return 0;
  21. }

数组的初始化

  • 在定义数组的同时进行赋值,称为初始化
  • 全局数组若不初始化,编译器将其初始化为零
  • 局部数组若不初始化,内容为随机值

    1. int a1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 定义一个数组,同时初始化所有成员变量
    2. int a2[10] = { 1, 2, 3 }; // 初始化前三个成员,后面所有元素都设置为0
    3. int a3[10] = { 0 }; // 所有的成员都设置为0
    4. // []中不定义元素个数,定义时必须初始化
    5. int a4[] = { 1, 2, 3, 4, 5 }; // 定义了一个数组,有5个成员

数组名

  • 数组名是一个地址的常量,代表数组中首元素的地址
  1. #include <stdio.h>
  2. int main() {
  3. // 定义一个数组,同时初始化所有成员变量
  4. int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  5. // 数组名是一个地址的常量,代表数组中首元素的地址
  6. printf("a = %p\n", a);
  7. printf("&a[0] = %p\n", &a[0]);
  8. int n = sizeof(a); // 数组占用内存的大小,10个int类型,10 * 4 = 40
  9. int n0 = sizeof(a[0]); // 数组第0个元素占用内存大小,第0个元素为int,4
  10. int num = n / n0; // 元素个数
  11. printf("n = %d, n0 = %d, num = %d\n", n, n0, num);
  12. return 0;
  13. }