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