【C语言】(4)数组

1. 数组简介

数组是用来存储一系列相同类型数据的集合。数组的元素可以通过索引(通常是数字)访问。数组的索引通常从 0 开始。

2. 声明数组

在 C 中,可以声明一个数组,如下所示:

c 复制代码
类型 数组名称[数组长度];

示例:

c 复制代码
int arr[10];   // 声明一个整数数组,包含10个整数
float floatArr[20];  // 声明一个浮点数数组,包含20个浮点数
char charArr[15];    // 声明一个字符数组,包含15个字符

3. 初始化数组

在声明数组时,也可以同时对数组进行初始化。

示例:

c 复制代码
int arr[5] = {1, 2, 3, 4, 5};   // 声明并初始化一个整数数组

如果不提供所有元素的初始值,未初始化的元素将被设置为默认值(对于数字类型是 0)。

4. 访问数组元素

可以通过数组名和索引来访问数组的任何元素。

示例:

c 复制代码
#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    printf("第三个元素为: %d\n", arr[2]);
    return 0;
}

5. 数组的遍历

通常使用循环来遍历数组的所有元素。

示例:

c 复制代码
#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

6. 多维数组

C 支持多维数组。最常见的是二维数组。

示例:

c 复制代码
#include <stdio.h>

int main() {
    int arr[2][3] = { {1, 2, 3}, {4, 5, 6} };
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

7. 数组和函数

数组可以作为参数传递给函数。

示例:

c 复制代码
#include <stdio.h>

void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
}

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    printArray(arr, 5);
    return 0;
}

8. 数组的局限性

  • 数组的大小一旦声明就不能改变。
  • 数组中的所有元素必须是同一类型。

9. 数组内存布局

一维数组在内存中是连续存放的。这意味着数组中相邻元素的地址也是连续的。这种内存布局使得数组的访问速度非常快。

10. 动态数组

在 C 语言中,也可以使用指针和动态内存分配(如 malloc)来创建大小可变的数组。

示例:

c 复制代码
int* dynamicArray = (int*)malloc(5 * sizeof(int));

11. 数组与字符串

在 C 语言中,字符串实际上是以 null 结尾的字符数组。因此,字符串可以使用字符数组来处理。

示例:

c 复制代码
char str[] = "Hello, World!";

12. 指针和数组

指针和数组在 C 语言中紧密相关。数组名可以作为指向数组第一个元素的指针。

示例:

c 复制代码
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr; // p 指向 arr 的第一个元素
相关推荐
AI科技星7 分钟前
ELN 升级:π 级数自动生成器全域数理架构
大数据·人工智能·python·算法·金融
强盛机器学习~11 分钟前
2026年SCI一区新算法-傅里叶变换优化算法(FTO)-公式原理详解与性能测评 Matlab代码免费获取
算法·matlab·进化计算·群体智能·傅里叶变换·元启发式算法
王老师青少年编程15 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【跳跃与过河问题】:过河问题
c++·算法·贪心·csp·信奥赛·跳跃与过河问题·过河问题
沉默-_-1 小时前
备战蓝桥杯-哈希
c++·学习·算法·蓝桥杯·哈希算法
拼好饭和她皆失1 小时前
基础算法--写给算法小白的模板指南:快速掌握核心代码,蓝桥杯必备模板
算法
吞下星星的少年·-·1 小时前
rotate函数应用模板
算法
保持清醒5401 小时前
二叉链表实现
数据结构
AI科技星1 小时前
人类首张【全域数学公理体系】黑洞内部结构图—基于「0-1-∞」三元本源的全维深度解析
人工智能·算法·机器学习·数学建模·数据挖掘·量子计算
paeamecium1 小时前
【PAT甲级真题】- Recover the Smallest Number (30)
数据结构·算法·pat考试·pat
Dillon Dong1 小时前
【风电控制】变流器转矩控制回路深度解析:从指令生成到闭环控制
算法·变流器·风电控制