无法比较指针和int,C

时间:2014-09-22 15:06:41

标签: c

我发送数组到函数frekvens_of_array及其大小。问题是它一直告诉我,我无法比较pointerint。我尝试在frekvens中添加新的唯一编号,并在alanyzed_array

每次出现时添加1+。

当我构建此程序时,我会收到如下错误和警告。

  

if(frekvens[j] != analyzed_arr[i])   警告:指针和整数之间的比较[默认启用]

     

frekvens[j] = analyzed_arr[i];错误:在键入' int [1]'时出现不兼容的类型来自类型' int'

int frekvens_of_array(int analyzed_arr[100], int array_size){
  int frekvens[100][1];
  int i = 0;
  int j = 0;
  int n = 0;
  int hit = 0;

  for(i = 0; i < array_size; i++){

    if(frekvens[j] != analyzed_arr[i]){
        frekvens[j] = analyzed_arr[i];

        for(n = 0; n < array_size; n++){
            if(frekvens[j] == analyzed_arr[n]){
                hit++;

            }

        }
        frekvens[j][0] = hit;
        j++;
    }

  }


  return 0;
}

int main(void){
int ange_tal_array[100];
int array_size = 100;

frekvens_of_array(ange_tal_array, array_size);
return 0;
}

2 个答案:

答案 0 :(得分:1)

抱歉,我意识到我对您的代码有误解。解决问题的正确方法是更改​​frekvens的声明:

int frekvens[100][1];

为:

int *frekvens[100];

使它成为一个指针数组。您的代码的其他部分不需要修改。

答案 1 :(得分:0)

int frekvens[100][1];

这是一个100行1列的2D数组。坦率地说,只有一个专栏没有任何意义;你应该把它变成一维数组。

问题在于:

if(frekvens[j] != analyzed_arr[i])

您只能将一半的2D数组编入索引。 frekvens[j]的类型为int[1],因此它仍然是一个数组。然后,您将比较一个不起作用的整数。

最简单的解决方法是将行重写为if(frekvens[j][0] != analyzed_arr[i]),但更好的解决方案是将frekvens转换为1D数组。