2011-06-30 296 views
1

我在比较结构数组的两个节点之间的变量dist。指向结构数组的指针

这是结构:

struct arco{ 
    int u, v; 
    double temp, dist; 
}arcos[MAXOASIS]; 

这是我的代码:

int compDist(const void *a, *void const *b, i, j){ 
    struct arco *ia = (struct arco *)a; 
    struct arco *ib = (struct arco *)b; 
    ia->arco[i].dist; 
    ib->arco[j].dist; 
    return(if(*ia > *ib)? *ia : *ib) 
} 

但它是错误的。应该怎么做?

+1

包含结构声明,向我们展示如何定义该数组,并让我们知道您正在尝试/要求做什么。 –

回答

3
ia->arco[i].dist; 
    ib->arco[j].dist; 

那该怎么办?你可能想要类似

return(ia->arco[i].dist > ib->arco[j].dist? ia->arco[i].dist : ia->arco[j].dist) 

你可以使用一些中间变量使它更清洁。

编辑

在你编辑的光很可能你想:

return (ia->dist - ib->dist); 
+0

我试图在arcos []中比较ith和jth dist的值,将这些值赋给指针,然后将它们进行比较。 –

+0

@Ignacio Pochart什么是'a'和'b'?你怎么调用这个函数? – cnicutar

1

您compairing指针strutcs而不是变量。我不知道你的结构定义,但我认为你需要这样的东西:

return(if(ia->arco[i].dist > ib->arco[i].dist)? 1 : 0); 
0

这里有很多错误在你的代码, 您最初返回结构的指针,而你的函数声明说INT。

struct arco *compDist(const void *a, *void const *b, i, j){ 
    struct arco *ia = (struct arco *)a; 
    struct arco *ib = (struct arco *)b; 
    return(if(ia->arco[i].dist > ib->arco[j].dist)? *ia : *ib) 
} 

也像

if(*ia > *ib) 

的比较是无效的,你不能只比较两个结构,在C++中,你可以重载“>”操作,但你不能这样做在同据我所知。

这应该工作,但我不能保证它,因为我不知道你是如何定义你的结构arco。

0

arco不是arco的成员。

而不是说“这是错误的”,发布编译器错误,你会得到更好的答案,作为回报。