数组特点
sizeof(a[0]) = sizeof(a[1]) = sizeof(a[n])
数组定义
int array[5]
sizeof(array)
整个数组占用的内存sizeof(array[0])
一个数组元素占用的内存一维数组长度计算公式:length=整个数组占用的内存一个数组元素占用的内存length = \frac{整个数组占用的内存}{一个数组元素占用的内存}length=一个数组元素占用的内存整个数组占用的内存
length = sizeof(array) / sizeof(array[0]);
数组定义
int array[5][6]
sizeof(array)
整个数组占用的内存sizeof(array[0])
一行数组占用的内存sizeof(array[0][0])
一个数组元素占用的内存二维数组行数计算公式:length=整个数组占用的内存一行数组占用的内存length = \frac{整个数组占用的内存}{一行数组占用的内存}length=一行数组占用的内存整个数组占用的内存
length = sizeof(array) / sizeof(array[0])
二维数组行数计算公式:length=一行数组占用的内存一个数组元素占用的内存length = \frac{一行数组占用的内存}{一个数组元素占用的内存}length=一个数组元素占用的内存一行数组占用的内存
length = sizeof(array[0]) / sizeof(array[0][0])
以三维数组为例
第一维数组长度
length = sizeof(array) / sizeof(array[0])
第二维数组长度
length = sizeof(array[0]) / sizeof(array[0][0])
第三维数组长度
length = sizeof(array[0][0]) / sizeof(array[0][0][0])
类比上面公式,计算数组第 N 维长度
length=sizeof(array[0][0])N−1sizeof(array[0][0][0])Nlength = \frac {sizeof(array[0][0])_{N-1}} {sizeof(array[0][0][0])_{N }}length=sizeof(array[0][0][0])Nsizeof(array[0][0])N−1
带入到一维数组
length=sizeof(array)sizeof(array[0])length = \frac{sizeof(array)}{sizeof(array[0])}length=sizeof(array[0])sizeof(array)
带入到二维数组
第一维长度
length=sizeof(array)sizeof(array[0])length = \frac{sizeof(array)}{sizeof(array[0])}length=sizeof(array[0])sizeof(array)
第二维长度
length=sizeof(array[0])sizeof(array[0][0])length = \frac{sizeof(array[0])}{sizeof(array[0][0])}length=sizeof(array[0][0])sizeof(array[0])
#include int main(int argc, char *argv[])
{int test_array1[10];int test_array2[7][8];int test_array3[3][4][5];long value;value = sizeof(test_array1) / sizeof(test_array1[0]);printf("一维数组长度:%ld \r\n", value);value = sizeof(test_array2) / sizeof(test_array2[0]);printf("二维数组行数:%ld \r\n", value);value = sizeof(test_array2[0]) / sizeof(test_array2[0][0]);printf("二维数组列数:%ld \r\n", value);value = sizeof(test_array3) / sizeof(test_array3[0]);printf("三维数组第一维长度:%ld \r\n", value);value = sizeof(test_array3[0]) / sizeof(test_array3[0][0]);printf("三维数组第二维长度:%ld \r\n", value);value = sizeof(test_array3[0][0]) / sizeof(test_array3[0][0][0]);printf("三维数组第三维长度:%ld \r\n", value);return 1;
}
/* 结果输出
一维数组长度:10
二维数组行数:7
二维数组列数:8
三维数组第一维长度:3
三维数组第二维长度:4
三维数组第三维长度:5
*/