回 帖 发 新 帖 刷新版面

主题:二维数组,传递指针,类型不兼容

/**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *编程练习10-8,初始化一个3 * 5的二位数组,并利用一个基于变长数组的函数把
  *该数组复制到另一个一个二位数组;还要编写一个基于变长数组的函数来显示两个
  *数组的内容(该函数应该能够处理任意的N * M数组)
  **/
#include <stdio.h>

void copy(int m, int n, const double array[m][n], double target[m][n]);
void show(int m, int n, const double *array[]);

int main(void)
{
    int m=3, n=5;
    double array[3][5] = {
        {1, 2, 3, 4, 5},
        {6, 7, 8, 9, 10},
        {11, 12, 13, 14, 15}
    }; 
    double target[m][n];

    copy(m, n, array, target);
    show(m, n, target);

    return 0;
}

void copy(int n, int m, const double array[m][n], double target[m][n])
{
    int i, j;

    for(i=0; i<m; i++)
        for(j=0; j<n; j++)
            target[m][n] = array[m][n];
}

void show(int m, int n, const double *array[])
{
    int i, j;

    for(i=0; i<m; i++){
        for(j=0; j<n; j++)
            printf("%f  ", array[m][n]);
        putchar('\n');
    }
    printf("显示完毕。\n");
}

10-8.c: 在函数‘main’中:

10-8.c:21:5: 警告: 传递‘copy’的第 3 个参数时在不兼容的指针类型间转换 [默认启用]
10-8.c:8:6: 附注: 需要类型‘const double (*)[(sizetype)(n)]’,但实参的类型为‘double (*)[5]’
10-8.c:22:5: 警告: 传递‘show’的第 3 个参数时在不兼容的指针类型间转换 [默认启用]
10-8.c:9:6: 附注: 需要类型‘const double **’,但实参的类型为‘double (*)[(sizetype)(n)]’

回复列表 (共4个回复)

沙发

同一个人吧
bbs.bccn.net/viewthread.php?tid=393952

板凳

嗯,多一个地方,多一份希望而已。

3 楼

二维数组,传递指针。这种方法还是可行的。














signature-----------------------------------------------------
A good book is the best of friends, the same today and forever.
[url=http://www.salefree2012.com/nike-free-run-2-c-31.html]nike free run 2[/url] , [url=http://www.salefree2012.com/nike-free-run-3-c-23.html]nike free run 3[/url] , [url=http://www.salefree2012.com/nike-free-30-v2-c-27.html]nike free 3.0[/url]

4 楼

好文章。总是支持一下的

我来回复

您尚未登录,请登录后再回复。点此登录或注册