2016-07-22 50 views
-4
#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; 
} 

それが表示されている:エラーは、引数に '* int型' から 'int型**' を変換できません '1' 'int型のショー(int型*)' に

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

heh?あなたは途中であなたのコードの半分を失ったのですか? –

+2

** 'main'の中に' disp() '**の定義を入れましたか? –

+1

@KlasLindbäck私は前に___why__を追加したいと思っています。:) –

答えて

2

あなたはポインタを渡しています( int*)〜disp()disp()の中には、そのポインタへのポインタ(int**)をshow()に渡します。

あなたがショーでダブルポインタでキャッチする必要があり
int disp(int *n){ 
    show(n); 
    return 0; 
} 
1

()関数で、

DISP(&マークは[i])とアドレスを送信:

は単なるポインタではなく、それのアドレスを渡しますそれは今ポインタのポインタをキャッチすることができますので、データのinstedのアドレスを送信しようとしているので、このようなダブルポインタをキャッチする必要があります

#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; 
} 
関連する問題