[英]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.