我已经定义了一个名为item的本地结构。我试图根据其中一个元素“uprice”对项目进行排序。当我尝试在排序中命中后切换两个项目中的元素时,我得到一个奇怪的错误,说我的数组a []结构项指针实际上不包含结构项。以下是我对代码及其后面的错误的看法:
这是我定义bsort函数和结构的代码的第一部分:
void bsort(struct item* a[], int n);
struct item{
int bcode;
int pcode;
float length;
float width;
int sheets;
int scode;
float price;
float uprice;
};
struct item* list;
这是我实现我的bsort函数的代码的第二部分:
void bsort(struct item* a[], int n)
{
int i, j, temp;
for (i = 0 ; i < n-1; i++)
{
for (j = 0 ; j < n-i-1; j++)
{
if (a[j].uprice > a[j+1].uprice)
{
temp = a[j].bcode;
a[j] = a[j+1].bcode;
a[j+1].bcode = temp;
//Switch each property of the array individually
}
}
}
}
引用bsort中的代码的错误消息:
price2.c: In function ‘bsort’:
price2.c:54: error: request for member ‘bcode’ in something not a structure or union
price2.c:55: error: request for member ‘bcode’ in something not a structure or union
price2.c:56: error: request for member ‘bcode’ in something not a structure or union
等...
答案 0 :(得分:1)
a[j].uprice
它仍然是指针。
答案 1 :(得分:1)
声明它的方式,a
是一个指向item
的指针数组。在这种情况下,您需要正确取消引用每个a[i]
:
if (a[j]->uprice > a[j+1]->uprice) { temp = a[j]->bcode; a[j] = a[j+1]->bcode; a[j+1]->bcode = temp; //Switch each property of the array individually }