2016-07-22 39 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; 
} 

是表示:錯誤不能轉換 '詮釋**' 到 '詮釋*' 的參數 '1' 到 'INT顯示爲(int *)'

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

嘿?在通往SO的路上你失去了一半的代碼嗎? –

+2

你把'disp()'**的定義放在**'main'裏面了嗎? –

+1

@KlasLindbäck我會在之前添加一個___why__ .. :) –

回答

2

你傳遞一個指針( int*)至disp()。在disp()的內部,您將指針指向該指針(int**)至show()

只是傳遞指針,而不是它的地址:

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

你有雙指針趕上Show()函數,

DISP(&標記[1])發送地址的那個,它是捕捉指針現在你試圖發送地址的數據,所以你必須趕上像這樣的雙指針

#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; 
} 
相關問題