您好,我写了这个排序算法,我不确定为什么我会得到以下错误:“成员引用基类型'int‘不是一个结构或联合”
void sort(float avg_dist, cg[]){
int i,j,t;
for(i=1; i<=cg[i]-1; i++)
for(j=1; j<=cg[i]-i; j++)
if(cg[j-1].avg_dist >= cg[j].avg_dist){
t = cg[j-1];
cg[j-1] = cg[j];
cg[j] = t;
}
}发布于 2015-07-28 23:05:11
cg是一个整型数组。
您不能访问int的“成员”,例如
cg[j-1].avg_dist我不知道你到底想做什么。也许是成倍的增长?
cg[j-1] * avg_dist发布于 2015-07-28 23:08:46
这不是问题所在,但您(可能是有意地)在函数中省略了类型说明符
void sort(float avg_dist, cg[]){
C默认使用int数组类型,这当然会使cg[j].avg_dist在语法上无效。(实际上,您可能希望乘以avg_dist,请使用*而不是成员选择运算符.)。
发布于 2015-07-28 23:40:04
这应该会让你有一个清晰的想法:
#include <stdio.h>
void sortArray(int *array, int length){
int i,j, k, temp;
for (i = 0 ; i < length-1; i++){
for (k = 0 ; k < length-i-1; k++){
if (array[k] > array[k+1]){
temp = array[k];
array[k] = array[k+1];
array[k+1] = temp;
}
}
}
printf("The result:\n");
for ( j = 0 ; j < length ; j++ ){
printf("%d ", array[j]);
}
}
int main(void){
int array[] = {1,4,2,-1,2,3,4,1,3,-1};
int length = sizeof array / sizeof array[0];
sortArray(array, length);
printf("\n");
return 0;
}输出:
结果:-1 -1 1 1 2 2 3 3 4 4
https://stackoverflow.com/questions/31680117
复制相似问题