繁体   English   中英

带结构和指针的程序出错(Structures,C ++)

[英]Error in program with structures and pointers (Structures, C++)

我有一个结构,在对象列表下包含三个变量.-名称,注册号,金额。

struct vendor
{
   int reg, amt;
   char add[30];
}list[10];

我已经使用引用概念创建了一个函数来查找最小量(amt)。

 int low(vendor *p, int n)
   {
int i;
min = (p->amt);
for(i =1;i<n;i++)
{
    if(min > *(p->amt))
    {
        min = *(p->amt);
    }
    p++;
}
return min;
 }

在主要内容中我包含了语法:

 low(list, n);

我收到一个错误:

Invalid argument of unary '*' operator.

我也试过使用点运算符,但是没有用。 这是我的第一个带有函数结构的指针程序。

你能指出代码中的错误吗?

非常感谢你

阿努邦

(更新)完整代码:

 #include <iostream>

 using namespace std;

 struct vendor
     {
     int reg, amt;
     char add[30];
     }list[10];

int low(vendor *p, int n)
     {
       int i;
       min = (p->amt);
       for(i =1;i<n;i++)
     {
       if(min > (p->amt))
       {
        min = (p->amt);
       }
         p++;
     }
      return min;
    }


 int main()
{
   int i;
   int fa;
   int n,fr;
   cin >> n;
   for(i =0;i<n;i++)
    {
       cin >>list[i].reg>>list[i].add>>list[i].amt; 
      // Enter reg no. , address and amount.
       }

   low(list, n); // Calling function

    for(i = 0;i<n;i++)
    {
       if(fr == list[i].amt)    
    // This is to check for position of least amount.
    // For printing the reg no. and address of least amt.
       {
          fa = i;
     }
 }

   cout << fr <<"\n" << fa <<endl;
   // print the reg no. and address of least amt.

  }

错误:

   Overloaded function with no contextual type information.
   Invalid operands of types <unresolved overloaded function 
    Cannot resolve overloaded function

p是指向供应商的指针。 *p是供应商。 p->amt是一个int。

所以当你想要p指向的对象的amt ,你可以用两种方式之一来做: p->amt(*p).amt

您可以使用p->amt(*p).amt修复代码。 *p->amt*(p->amt)无效。

p是供应商的对象,其类型是指针。 “ - >”用于使用指针对象。 所以使用p-> amt。

你也可以使用(* p).amt。

更新答案:

min的变化缺失了。 请用这个:

int min = p->amt ;

或使用此:

int min = (*p).amt;

low()函数中缺少min的声明。

int min = (p->amt);

这应该可以帮助您编译代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM