2015-11-28 83 views
0

我正在與C矩陣工作,我收到警告,我似乎無法解決。功能Procura矩陣在C:指針和整數之間的比較[默認情況下啓用]警告

的警告:指針和整數之間的比較

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

int procura_matriz(int **m, int numero, int y, int k){ 

int i, j, trueOrFalse=0; 

for(i=0;i<y*k;i++){    
    if (m[i]==numero){  
     trueOrFalse=1;  
     break; 
    } 
} 

return trueOrFalse; 
} 

主要[默認啓用]:

#include <stdio.h> 

int main(){ 

int trueOrFalse; 
int y=5, k=2; 
int m[5][2] = {{1,2},{3,1},{5,12},{4,8},{29,10}};  
int numero =13; 

trueOrFalse=procura_matriz(m, numero, y, k); 

printf("\n0(Não tem numero) | 1 (Tem numero) -> %d\n", trueOrFalse); 
return 0; 
} 

回答

0

在代碼中,mint **型的,所以,m[i]的類型爲int *,你無法將其與numero這是一個int,當然。

而不是使用一個索引i的,你可以利用兩個指標,比方說,ij控制由yk,在你的函數。

+0

我將代碼更改爲2個循環,並試圖以兩種不同方式「獲取數字」。 爲(I = 0;我

+0

另一種方式是,而不是具有 「M [i] [j]」 我試圖與 「(*(*(M + 1)+ j)段)」,但仍然有錯誤。 –

0

M是二維陣列。 M [i]是一個數組。並且你將一個數組與一個整數進行比較,所以你會得到警告。 將m [i]更改爲m [i/y] [i%y]來解決

+0

我將代碼更改爲2個循環,並用「m [i] [j]」試圖獲得數字「,但現在錯誤爲」分段錯誤「。對於(i = 0; i

+0

我沒有看到您的代碼中的問題。您可以添加printf函數來打印m [i] [j]來調試並告訴我輸出 – Viet

相關問題