如何通过指针在C中传递一个二维数组? [英] How to pass a 2D array by pointer in C?

查看:127
本文介绍了如何通过指针在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆