错误记录关于二维数组的调用error: cannot convert ‘int**‘ to ‘int (*)[48]‘

数组相信大家都不会陌生,编程中常见的一种数据类型。
现在说的问题是关于二维数组调用的一些情况。

int a[5][5]

像这样我们随便定义一个二维数组,在传递参数的时候像这样就OK了

void f(int a[][5])
{
    /*....*/
}

当然还有一些其他的方法可以处理函数调用的问题,当然这个问题并不是这篇博客所讨论的重点,在一次写程序中:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include<math.h>
#include<string.h>
#include<gmp.h>
#define Center 5
#define Dim 48
void printf_center(mpz_t** center);
void printf_int(int** hhh);
int main(int argc, char* argv[])
{
    int i,j,**hhh;
    mpz_t **center;
    center=(mpz_t **)malloc(sizeof(mpz_t *)*Center);
    hhh=(int **)malloc(sizeof(int *)*Center);
    for(i=0;i<Center;i++)
    {
        center[i]=(mpz_t *)malloc(sizeof(mpz_t)*Dim);
        hhh[i]=(int *)malloc(sizeof(int)*Dim);
        for(j=0;j<Dim;j++)
        {
            mpz_init_set_si(center[i][j],j);
            hhh[i][j]=j;
        }
    }
    printf("在main函数中的输出!\n");
    for(i=0;i<Center;i++)
    {
        for(j=0;j<Dim;j++)
        {
            gmp_printf("%Zd  ",center[i][j]);
        }
        printf("\n");
    }
    printf("调用函数输出:\n");
    printf_center(center);
    printf_int(hhh);
    return 0;
}
void printf_center(mpz_t** center)
{
    int i,j;
    for(i=0;i<Center;i++)
    {
        for(j=0;j<Dim;j++)
        {
            gmp_printf("%Zd  ",center[i][j]);
        }
        printf("\n");
    }
}
void printf_int(int** hhh)
{
    int i,j;
    for(i=0;i<Center;i++)
    {
        for(j=0;j<Dim;j++)
        {
            printf("%d ",hhh[i][j]);
        }
        printf("\n");
    }
}

可以看出来在上面的代码中二维数组的定义并非一个确定的值,数组的内存是我通过malloc函数申请的,也就是动态数组,这时候我们如果像之前那样进行函数调用就会报错,错误提示为:
error: cannot convert ‘int**’ to ‘int (*)[48]’

void printf_int(int hhh[][Dim]);

所以我们只能这样来调用

void printf_int(int** hhh);

行吧 就到这了,希望有所帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值