徐善通的随笔

千里之行, 始于足下



c语言使用sizeof获取数组长度并遍历数组


c语言使用sizeof获取数组长度

这是只使用sizeof, 不使用指针

因为数组只要定义了就会分配内存, 所以可以通过内存占用来计算出数组的行和列数量

#include <stdio.h>

int main()
{
    int arr[4][5] = {
        {1, 2, 3, 4, 5},
        {11, 12, 13, 14, 15},
        {21, 22, 23, 24, 25},
        {31, 32, 33, 34, 35},
    };

    // 使用数组占用的总空间 / 第一行占用的空间, 可以得出数组的行的数量
    // 使用数组第一行占用的空间 / 第一个元素占用的空间, 可以得出列的数量

    // 此处使用 size_t是为了和sizeof 的返回类型对应, 使用int也是可以的
    size_t rows = sizeof(arr) / sizeof(arr[0]);
    size_t cols = sizeof(arr[0]) / sizeof(arr[0][0]);

    printf("数组占用内存为: %zd\n", sizeof(arr));
    printf("int长度为 %zd字节\n", sizeof(int));
    printf("遍历数组arr: \n");

    for (size_t i = 0; i < rows; i++) {
        for (size_t j = 0; j < cols; j++) {
            printf("%4d", arr[i][j]);
        }
        printf("\n");
    }

    return 0;
}

打印结果为

shantong@mac  ~/c-project/ gcc array.c  && ./a.out
数组占用内存为: 80
int长度为 4字节
遍历数组arr: 
   1   2   3   4   5
  11  12  13  14  15
  21  22  23  24  25
  31  32  33  34  35

作者: 徐善通
地址: https://www.xstnet.com/article-142.html
声明: 除非本文有注明出处,否则转载请注明本文地址


我有话说



最新回复


正在加载中....

Copyrights © 2016-2019 醉丶春风 , All rights reserved. 皖ICP备15015582号-1