我发送数组到函数frekvens_of_array
及其大小。问题是它一直告诉我,我无法比较pointer
和int
。我尝试在frekvens
中添加新的唯一编号,并在alanyzed_array
当我构建此程序时,我会收到如下错误和警告。
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;
}
答案 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数组。