注册 登录
编程论坛 C语言论坛

关于C语言,二维数组指针的问题

a187326700 发布于 2020-03-27 09:11, 1525 次点击
#include<stdio.h>

void show_array(int (*pr)[n], int n);

int    main(void)
{
    int    array[3][4] = {-3,2,43,4,5,6,-17,8,9,10,11,12};
    show_array(array, 4);
   
    return    0;
}

void show_array(int    (*pr)[n], int n)
{
    for(int i=0; i<3; i++)
    {
        for(int j=0; j<n; j++)
            printf("%5d",*(*(pr+i)+j));
        puts("\n");
    }
}

为什么编译不通过,请大神指点一下哪里错了
3 回复
#2
forever742020-03-27 09:17
ANSI C声明中方括号里需要常量表达式,而多半编译器即使支持更新的标准也需要你明确告诉它才行。
#3
a1873267002020-03-27 09:29
回复 楼主 a187326700
怎么明确告诉编译器,能告诉我吗?
#4
rjsp2020-03-27 10:00
程序代码:
#include <stdio.h>

void show_array( size_t, size_t, int[][*] );

int main( void )
{
    int array[3][4] = { {-3,2,43,4}, {5,6,-17,8}, {9,10,11,12} };
    show_array( 3, 4, array );
}

void show_array( size_t row, size_t col, int arr[row][col] )
{
    for( size_t r=0; r!=row; ++r )
    {
        for( size_t c=0; c!=col; ++c )
            printf( "%5d", arr[r][c] );
        putchar( '\n' );
    }
}
1