如果我将二维数组及其大小指示器传递给 C 中的同一函数,这是错误还是不合适?
Is it a mistake or inappropriate if i pass a 2D array and it's size indicator to the same function in C?
例如:
void size(int a, int array[a][a]){
..........
}
(我的意思是可以传递 int a 并且还可以将变量 a 作为数组的大小我也传递给相同的函数吗?我还想问一下是否可以使用 double 传递 2D 数组例如指针:
void smthn(int **array){...}?)
这个声明
void size(int a, int array[a][a]);
相当于
void size(int a, int ( *array )[a] );
其中 array
是指向具有 a
个元素的可变长度数组的指针。
这是 C99 中的有效语法。
这是一个演示程序
#include <stdio.h>
void f( size_t n, int a[n][n] )
{
printf( "%zu\n", sizeof( *a ) / sizeof( **a ) );
}
int main(void)
{
int a[3][3];
int b[10][10];
f( 3, a );
f( 10, b );
return 0;
}
程序输出为
3
10
例如:
void size(int a, int array[a][a]){
..........
}
(我的意思是可以传递 int a 并且还可以将变量 a 作为数组的大小我也传递给相同的函数吗?我还想问一下是否可以使用 double 传递 2D 数组例如指针: void smthn(int **array){...}?)
这个声明
void size(int a, int array[a][a]);
相当于
void size(int a, int ( *array )[a] );
其中 array
是指向具有 a
个元素的可变长度数组的指针。
这是 C99 中的有效语法。
这是一个演示程序
#include <stdio.h>
void f( size_t n, int a[n][n] )
{
printf( "%zu\n", sizeof( *a ) / sizeof( **a ) );
}
int main(void)
{
int a[3][3];
int b[10][10];
f( 3, a );
f( 10, b );
return 0;
}
程序输出为
3
10