指向结构体数组的指针

发布于 2024-11-17 19:20:40 字数 418 浏览 6 评论 0原文

我正在尝试比较结构数组的两个节点之间的变量 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)
}

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

I'm trying to compare the variable dist between two nodes of my array of structures.

This is the structure:

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

This is my code:

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)
}

But it is wrong. How should it be done?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

转角预定愛 2024-11-24 19:20:40
  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);
  ia->arco[i].dist;
  ib->arco[j].dist;

What is that supposed to do ? You probably want something like

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

You could use some intermediate variables to make it cleaner.

EDIT

In light of your edit it's likely you want:

return (ia->dist - ib->dist);
染柒℉ 2024-11-24 19:20:40

您正在将指针与 strutc 进行比较,而不是与变量进行比较。我不知道你的结构定义,但我认为你需要类似的东西:

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

You are compairing pointer to strutcs rather then variables. I don't know your struct definition but I think you need something like:

return(if(ia->arco[i].dist > ib->arco[i].dist)? 1 : 0);
等待我真够勒 2024-11-24 19:20:40

你的代码中有很多错误,
您最初返回一个结构指针,而您的函数声明显示为 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++中,你可以重载“>”运算符,但据我所知,你不能在 c 中做同样的事情。

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

There are a lots of mistakes in your code,
You were initially returning a structure pointer whereas your function declaration says 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)
}

Also a comparison like

if(*ia > *ib)

is invalid, you can't just compare two structures, in c++, you could overload the '>' operator but you can't do the same in c as far as i know.

That should work but i can't guarantee it as i have no idea how you've defined your structure arco.

哀由 2024-11-24 19:20:40

阿科不是阿科的成员。

不要说“这是错误的”,而是发布您遇到的编译器错误,这样您就会得到更好的答案。

arco is not a member of arco.

Instead of saying "it is wrong", post the compiler errors you are getting, and you will get better answers in return.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文