如何通过指针在C中传递一个二维数组? [英] How to pass a 2D array by pointer in C?
本文介绍了如何通过指针在C中传递一个二维数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我学习C和时遇到一个二维数组的指针传递给另一个函数,然后打印二维数组。任何帮助将是AP preciated。
INT主要(无效){
字符数组[50] [50];
INT大小; ...调用函数来填充数组...这部分作品。 printarray(数组,SIZE);
}无效printarray(字符数组**,诠释SIZE){
INT I;
诠释J; 为(J = 0; J<大小; J ++){
对于(i = 0; I<大小;我++){
的printf(%C,阵列[J] [I]);
}
的printf(\\ n);
}
}
解决方案
的char **
不会重新present二维数组 - 这将是一个数组的指针的指针。您需要更改 printarray
的定义,如果你想传递一个二维数组:
无效printarray(CHAR(*数组)[50],INT SIZE)
或等价:
无效printarray(char数组[] [50],INT SIZE)
I am learning C and am having trouble passing the pointer of a 2D array to another function that then prints the 2D array. Any help would be appreciated.
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" );
}
}
解决方案
char **
doesn't represent a 2D array - it would be an array of pointers to pointers. You need to change the definition of printarray
if you want to pass it a 2D array:
void printarray( char (*array)[50], int SIZE )
or equivalently:
void printarray( char array[][50], int SIZE )
这篇关于如何通过指针在C中传递一个二维数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文