错误无法转换' int **'到' int *'争论' 1' to' int show(int *)'

时间:2016-07-22 07:08:01

标签: c

#include<stdio.h>

int show( int *m);
int disp(int *n);

int main()
{
    int i;
    int marks[]={55,65,70,75,78};
    for(i=0;i<4;i++)
    {
        disp(&marks[i]);
        return 0;
    }
}

int disp(int *n)
{
   show(&n);
   return 0;
}

int show(int *m)
{
   printf("%d\n", *m);
   return 0;
}

显示:

error[Error] cannot convert 'int**' to 'int*' for argument '1' to 'int show(int*)'

2 个答案:

答案 0 :(得分:2)

您正在将指针(int*)传递给disp()。在disp()内,您将指向该指针(int**)的指针传递给show()

只需传递指针而不是地址:

int disp(int *n){
    show(n);
    return 0;
}

答案 1 :(得分:1)

你必须在Show()函数中捕获双指针,

disp(&amp; marks [i])发送它的地址,它现在用指针捕获你试图发送数据的地址,所以你必须像这样用双指针捕获

#include<stdio.h>
int show( int **m);
int disp(int *n);

int main()
{
int i;
int marks[]={55,65,70,75,78};
for(i=0;i<4;i++)
{
disp(&marks[i]);
return 0;
}
}
int disp(int *n)
{
show(&n);
return 0;
}
int show(int **m)
{
printf("%d\n", **m);
return 0;
}