2017-12-27 648 views
-5

我不知道如何解決和需要幫助的錯誤是:似乎無法理解C程序今僅存錯誤

在第20行和列28

[錯誤]不能轉換 '詮釋**' 到 'INT *' 的參數 '1' 到 '空隙 樂透(INT *,INT,INT,INT,INT,INT)'

在的這部分代碼:

#include <stdio.h> 
    #include <stdlib.h> 

    int read1(); 
    int even1(); 
    int even2(); 
    int sum1(); 
    int sum2(); 
    void lotto(int*, int, int, int, int, int); 
    int* table_num(int); 

    int main() 
    { 
     int a=read1(); 
     int* t = table_num(a); 
     int x=even1(); 
     int y=even2(); 
     int g=sum1(); 
     int h=sum2(); 
     lotto(&t, a, x, y, g, h); /*error here*/ 
     return 0; 
    } 

這裏是功能:

void lotto(int* a, int n, int armax, int armin, int atmax, int atmin) 
{ 
    int q, w, z=1; 

    for (int i = 0; i < n-5; ++i) 
    { 
     for (int j = i+1; j < n-4 ; ++j) 
     { 
      for (int k = j+1; k < n-3 ; ++k) 
      { 
       for (int l = k+1; l < n-2 ; ++l) 
       { 
        for (int m = l+1; m < n-1 ; ++m) 
        { 
         for (int i1 = m+1; i1 < n; ++i1) 
         { 

          q=0; 

          (i%2==0)?q+=1:2; 
          (j%2==0)?q+=1:2; 
          (k%2==0)?q+=1:2; 
          (l%2==0)?q+=1:2; 
          (m%2==0)?q+=1:2; 
          (i1%2==0)?q+=1:2; 

          w=i+j+k+l+m+i1; 

          if((q<=armax||q>=armin)&&(w>=atmin||w<=atmax)) 
          { 

           printf("The %d st/nd/rd/th group of 6 numbers is :\t",z); 
           printf("%d ,%d ,%d ,%d ,%d ,%d \n\n",*(a+i), *(a+j), *(a+k), *(a+l), *(a+m), (a+i1)); 
           z++; 

          }else 
           continue; 



         } 

        } 

       } 

      } 

     } 

    } 

} 

,如果你想需要整個代碼回答我的問題,我可以在

+0

指針變量的地址是雙指針 - 意思是**。 – coderredoc

+0

取代這個lotto(&t,a,x,y,g,h);樂透(t,a,x,y,g,h); – Pirate

回答

1

編輯替換該lotto(&t, a, x, y, g, h);lotto(t, a, x, y, g, h);

在函數聲明中,你提到輸入參數爲,指向int,bu t再次通過指向指向int的指針並且導致錯誤。

+0

這使它的工作,但現在它不顯示我想要的數字(我給了6組數字),它顯示隨機數字(內存位置,因爲我刪除&) –

+0

然後檢查您的代碼。可能是您正在訪問沒有任何內容或初始化的位置的值。 – Pirate

1

問題是'& t'在你指定'int *'的lotto()中併發送'int **'。嘗試編譯沒有'&'

+0

,它使它工作,但現在它不顯示我想要的數字(我給了6個數字的組),它顯示隨機數(自從我刪除&以後的內存位置) –