Ben*_*čas 4 c arrays function parameter-passing
例如 :
void size(int a, int array[a][a]){
..........
}
Run Code Online (Sandbox Code Playgroud)
(我的意思是可以传递int a并且还有变量a作为数组的大小我也传递给相同的函数?我还想问是否可以使用双指针传递2D数组,例如:void smthn(int**array){...}?)
这个宣言
void size(int a, int array[a][a]);
Run Code Online (Sandbox Code Playgroud)
相当于
void size(int a, int ( *array )[a] );
Run Code Online (Sandbox Code Playgroud)
where 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;
}
Run Code Online (Sandbox Code Playgroud)
程序输出是
3
10
Run Code Online (Sandbox Code Playgroud)