带有结构和指针的程序错误(结构,C++)

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

本文关键字:结构 C++ 错误 指针 程序      更新时间:2023-10-16

我有一个结构,它在对象列表下包含三个变量。

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

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

int min = (p->amt);

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

p是指向供应商的指针。 *p是一个小贩。 p->amt是一个整数。

因此,当您想要p指向的对象amt时,您可以通过以下两种方式之一来实现:p->amt(*p).amt

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

p 是

vendor 的对象,其类型是指针。"->"用于使用指针对象。所以使用 p->amt .

您也可以使用 (*p(.amt 。

更新的答案 :

缺少最小值的递减。 请使用这个:

int min = p->amt ;

或使用此:

int min = (*p).amt;