MinGW GCC 4.7.0给我警告将double [] []传递给const double(*)[]

时间:2013-02-15 14:16:28

标签: c windows gcc mingw

我在main函数中有两个类型的双2D数组。我有将array1复制到array2的函数。我将两个数组传递给该函数。第一个数组不需要改变,因此我将形式参数od第一个数组声明为类型const,但MinGW GCC给出了警告:

main.c:14:5: warning: passing argument 1 of 'Copy' from incompatible pointer type [enabled by default]
main.c:2:6: note: expected 'const double (*)[3]' but argument is of type 'double (*)[3]'

程序除了那个警告之外还可以工作,但如果我只想从中读取它,可以声明类型为const的形式参数。我想保护被改变的实际论点。

#include <stdio.h>
void Copy( const double (*)[3], double (*)[3], int);

int main(void)
{
    double array[4][3] =
    { 
        {79.2, 12.6, 111.9}, 
        {56.4, 139.2, 111.5}, 
        {11.1, 99.7, 21.0}, 
        {91.0, 11.2, 45.5}
    };
    double arrCopy[4][3];
    Copy(array, arrCopy,  4);


    for(int i = 0; i < 4; i++)
    {
        for(int j = 0; j < 3; j++)
        {
            printf("%.2f ", *(*(arrCopy + i) + j));
        }
        putchar('\n');
    }
    return 0;
}

void Copy( const double (*array)[3], double (*arrCopy)[3], int n )
{
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < 3; j++)
        {
            *(*(arrCopy + i) + j) = *(*(array + i) + j);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

中删除const
void Copy( const double (*array)[3], double (*arrCopy)[3], int n )