对于静态创建的数组类型,您可以使用sizeof运算符,例如
sizeof(myArray) / sizeof(myArray[0])
对于动态创建的数组(即通过指针引用),这将不起作用(sizeof将只为您提供系统上指针的大小).在这种情况下,您需要常量或数组中的sentinal值.使用sentinal,只扫描每个轴,直到找到它的长度(这是C字符串的工作方式,使用\ 0).
对于静态创建的数组类型,您可以使用sizeof运算符,例如
sizeof(myArray) / sizeof(myArray[0])
对于动态创建的数组(即通过指针引用),这将不起作用(sizeof将只为您提供系统上指针的大小).在这种情况下,您需要常量或数组中的sentinal值.使用sentinal,只扫描每个轴,直到找到它的长度(这是C字符串的工作方式,使用\ 0).
在C我会做以下,尝试:
sizeof( matrix ) /sizeof( matrix[0] ) <- outer array sizeof( matrix[0] )/ sizeof( matrix[0][0] ) <- inner array linux ~ $ cat sizeof_test.c #includeint main( void ) { int matrix[][3] = { {1,2,3}, {1,2,3}, {1,2,3}, }; int matrix2[][3] = { {1,2,3}, {1,2,3}, {1,2,3}, {1,2,3}, }; int matrix3[][4] = { {1,2,3,4}, {1,2,3,4}, {1,2,3,4}, {1,2,3,4}, }; printf( "array (%d) - elements( %d )\n", sizeof( matrix ) /sizeof( matrix[0] ), sizeof( matrix[0] )/ sizeof( matrix[0][0] )); printf( "array (%d) - elements( %d )\n", sizeof( matrix2 ) /sizeof( matrix2[0] ), sizeof( matrix2[0] )/ sizeof( matrix2[0][0] )); printf( "array (%d) - elements( %d )\n", sizeof( matrix3 ) /sizeof( matrix3[0] ), sizeof( matrix3[0] )/ sizeof( matrix3[0][0] )); return 0; } linux ~ $ gcc sizeof_test.c -o sizeof_test linux ~ $ ./sizeof_test array (3) - elements( 3 ) array (4) - elements( 3 ) array (4) - elements( 4 ) linux ~ $