C 数组详解

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 在C语言中,数组是一种用于存储多个同类型数据的集合。本文介绍了数组的基本特性与使用方法,包括定义与初始化、索引访问、多维数组、指针操作、大小计算及函数传递等内容。数组名可视为指向首元素的指针,支持遍历、排序与查找等常见操作。数组大小固定,访问越界会导致未定义行为。此外,还可以将数组嵌套在结构体中以增加数据复杂性。

在C语言中,数组是一种用于存储多个同类型数据的集合,其基本特性和使用方法如下:

1. 数组的定义和初始化

数组由一系列相同类型的元素构成,可以通过如下方式定义和初始化:

// 定义数组
int arr[5]; // 创建一个可以存储5个整数的数组

可以在定义时初始化数组:

int arr[5] = {
   1, 2, 3, 4, 5}; // 定义并初始化数组

如果省略数组大小,编译器会根据初始化列表的元素数量自动确定大小:

int arr[] = {
   1, 2, 3, 4, 5}; // 自动确定大小,大小为5

2. 数组索引

数组的索引从0开始,可以通过下标访问各个元素:

int first = arr[0]; // 访问第一个元素
arr[2] = 10; // 修改第三个元素的值为10

3. 多维数组

C语言支持多维数组,一般使用二维数组较为常见:

int matrix[3][4]; // 创建一个3行4列的二维数组

初始化二维数组的方式:

int matrix[2][3] = {
   
    {
   1, 2, 3},
    {
   4, 5, 6}
};

4. 数组与指针

数组名在表达式中通常被视为指向第一个元素的指针:

int *p = arr; // p指向数组的第一个元素

可以通过指针实现数组的遍历:

for (int i = 0; i < 5; i++) {
   
    printf("%d ", *(p + i)); // 通过指针访问数组元素
}

5. 数组的大小

可以使用sizeof运算符计算数组的大小(以字节为单位):

size_t size = sizeof(arr); // 数组的总字节数
size_t length = sizeof(arr) / sizeof(arr[0]); // 数组中元素的个数

6. 数组的传递

在C语言中,数组不能直接作为函数参数传递,实际上传递的是指向数组第一个元素的指针:

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

int main() {
   
    int arr[] = {
   1, 2, 3, 4, 5};
    function(arr, 5); // 传递数组
}

7. 数组的限制

  • 数组的大小在定义时必须是常量(不可变量),不能在运行时动态改变。
  • 数组元素之外的访问会导致未定义行为(如越界)。
  • C语言不提供数组的内置边界检查,因此访问边界外的元素可能导致程序崩溃或数据错误。

8. 常见操作

  • 遍历:使用循环结构访问和修改数组元素。
  • 排序:可以使用冒泡排序、选择排序等经典算法对数组进行排序。
  • 查找:可以实现线性查找或二分查找等算法来查找数组中的元素。

9. 嵌套数组和结构体

可以将数组嵌套在结构体中,增加数据的复杂性:

typedef struct {
   
    char name[30];
    int scores[5];
} Student;
相关文章
|
4月前
|
存储
数组的初识
数组的初识
|
4月前
|
存储 算法 C++
c++数组详细介绍(二)
c++数组详细介绍(二)
96 0
|
3月前
数组(3)
数组(3)
24 2
|
4月前
|
存储 搜索推荐 算法
C数组
C数组
31 0
|
11月前
|
存储 C语言 索引
C 数组
C 数组。
33 0
|
4月前
|
存储 C++ 索引
C++数组
C++数组
|
4月前
|
存储 C++ 索引
c++数组
c++数组
34 1
|
11月前
|
存储 算法 开发者
数组
一、数组 数组是一种线性结构,它由一组连续的内存单元组成,用于存储相同类型的数据元素。数组的特点包括: 1. 顺序存储:数组中的元素按照一定的顺序存储在连续的内存空间中。每个元素占据一个固定的位置,可以通过索引来访问。 2. 索引访问:数组中的元素可以通过索引来访问,索引从0开始,依次递增。通过索引,可以快速定位和访问数组中的元素。 3. 相同类型:数组中的元素必须是相同类型的数据,例如整数、浮点数、字符等。这是因为数组需要在内存中分配一块连续的空间来存储元素,而不同类型的数据可能占据不同大小的内存空间。 4. 固定大小:数组的大小在创建时就确定,并且不能动态改变。一旦创建了一个数组,它的大小
44 0
数组相关练习
数组相关练习
48 0