【问题标题】:Function Procura Matriz in C: Comparison between pointer and integer [enabled by default] WarningC中的函数Procura Matriz:指针和整数之间的比较[默认启用]警告
【发布时间】:2016-03-02 11:15:19
【问题描述】:

我正在使用 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;
}

【问题讨论】:

    标签: c function pointers compare warnings


    【解决方案1】:

    在您的代码中,m 的类型为 int **,因此,m[i] 的类型为 int *,您无法将其与 numero 进行比较,当然,int 是。

    您可以在函数中使用由yk 控制的两个索引,例如ij,而不是使用一个索引i

    【讨论】:

    • 我将代码更改为 2 个循环,并尝试以两种不同的方式“获取数字”。 for (i = 0; i
    • 另一种方法是,我尝试使用“(* (* (m + i) + j))”而不是“m [i] [j]”,但仍然出现错误。跨度>
    【解决方案2】:

    M 是一个二维数组。 M[i] 是一个数组。并且您将数组与整数进行比较,因此您会收到警告。 将 m[i] 改为 m[i/y][i%y] 即可解决

    【讨论】:

    • 我将代码更改为 2 个循环并使用“m[i][j]”“尝试获取数字”,但现在错误是“分段错误”。代码-> for (i = 0; i
    • 我没有在您的代码中看到问题。您可以添加 printf 函数来打印 m[i][j] 进行调试并告诉我输出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    相关资源
    最近更新 更多