【发布时间】:2013-05-19 10:18:05
【问题描述】:
我正在学习 C,但无法将二维数组的指针传递给另一个函数,然后再打印二维数组。任何帮助,将不胜感激。
int main( void ){
char array[50][50];
int SIZE;
...call function to fill array... this part works.
printarray( array, SIZE );
}
void printarray( char **array, int SIZE ){
int i;
int j;
for( j = 0; j < SIZE; j++ ){
for( i = 0; i < SIZE; i ++){
printf( "%c ", array[j][i] );
}
printf( "\n" );
}
}
【问题讨论】:
-
void printarray(char array[][50], int SIZE)
-
虽然可以这样做,但最好将其转换为一维数组并使用
j*SIZE+i对其进行索引。 -
@Dave 为什么? .............................(只是填充物)
-
@kotlomoy 因为 C 的 n-D 数组语法充其量是模棱两可的,并且手动索引它会迫使您考虑内存顺序(通常对缓存性能有用)。这也意味着您将来可以无缝切换到使用动态大小的数组(通过
malloc)。