为啥多维数组第一维的大小可以是任意的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥多维数组第一维的大小可以是任意的相关的知识,希望对你有一定的参考价值。
只有在带初始化时才可以是任意的。例如:
int a[][3]=1,2,3,4,5,8;
初始化,得数组大小 6, 共3列,可以算出有 2 行。
int a[][3]; 不带初始化,编译错误。 参考技术A 因为在数组总共能够存储的数据个数一定的情况下,只知道第二维就可以了,第一维也就知道了,比如已知一个2维数组A一共可以存放200个数据,那么用A[][2]就可以了,这样第一维肯定就是100了。
至于为什么不是第二维是任意的,和编译系统有关。
数组参数和指针参数
1.C语言中只会以值拷贝的方式传递参数
2.当向函数传递数组时,将数组名看做常量指针传数组首元素地址
3.二维数组参数同样存在退化的问题,二维数组可以看做是一维数组,二维数组中的每个元素是一维数组
4.二维数组参数中第一维的参数可以省略
5.C语言中无法向一个函数传递任意的多维数组
6.为了提供正确的指针运算,必须提供除第一维之外的所有维长度
7.限制:一维数组参数-必须提供一个标志数组结束位置的长度信息
二维数组参数-不能直接传递给函数
三维或更多维数组参数-无法使用
#include <stdio.h> void access(int a[][3], int row) { int col = sizeof(*a) / sizeof(int); int i = 0; int j = 0; printf("sizeof(a) = %d\n", sizeof(a)); for(i=0; i<row; i++) { for(j=0; j<col; j++) { printf("%d\n", a[i][j]); } } } int main() { int a[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; access(a, 3); }
以上是关于为啥多维数组第一维的大小可以是任意的的主要内容,如果未能解决你的问题,请参考以下文章