C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C语言数组内存存储

C语言数组从创建到内存存储的示例详解

作者:nbwenren

在C语言中,数组是一种基本的数据结构,用于存储固定大小的相同类型元素的集合,本文给大家介绍C语言数组从创建到内存存储的相关知识,感兴趣的朋友跟随小编一起看看吧

数组基础概念

数组是存储固定数量同类型元素的数据结构,内存中连续存储,通过下标(从0开始)快速访问。

声明与初始化示例

int arr[5];               // 声明未初始化
int nums[3] = {1, 2, 3};  // 完全初始化
char str[] = "hello";     // 自动推导长度(包含'\0')

一维数组操作

遍历与输入输出

for (int i = 0; i < 5; i++) {
    scanf("%d", &arr[i]);  // 输入
    printf("%d ", arr[i]); // 输出
}

内存连续性验证

printf("%p\n", &arr[0]);  // 输出相邻地址差为sizeof(int)
printf("%p\n", &arr[1]);  // 如4字节(int类型)

二维数组

声明与遍历

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

内存布局
二维数组按行优先连续存储,matrix[0][2]matrix[1][0]地址相邻。

实用技巧

计算数组长度

int size = sizeof(arr) / sizeof(arr[0]);  // 适用于一维数组

二分查找实现

int binary_search(int arr[], int n, int target) {
    int left = 0, right = n - 1;
    while (left <= right) {
        int mid = left + (right - left) / 2;  // 防溢出
        if (arr[mid] == target) return mid;
        else if (arr[mid] < target) left = mid + 1;
        else right = mid - 1;
    }
    return -1;
}

常见错误

应用场景

通过理解内存布局和下标机制,可高效操作数组并避免常见错误。

到此这篇关于C语言数组详解:从创建到内存存储的文章就介绍到这了,更多相关C语言数组内存存储内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

阅读全文