所以,我有这个结构:
typedef struct {
int day;
int amount;
char type[4],desc[20];
}transaction;
此函数用于填充在main中声明的事务类型的向量:
void transact(transaction t[],int &n)
{
for(int i=0;i<n;i++)
{
t[i].day=GetNumber("Give the day:");
t[i].amount=GetNumber("Give the amount of money:");
t[i].type=GetNumber("Give the transaction type:");
t[i].desc=GetNumber("Give the descripition:");
}
}
我在函数transact()
的标题处得到的错误:
Multiple markers at this line
- Syntax error
- expected ';', ',' or ')' before '&' token
答案 0 :(得分:6)
您正在尝试将n
参数声明为引用(int &n
)。但引用是C ++特性,在C中不存在。
由于该函数没有修改n
的值,只需将其设为正常参数:
void transact(transaction t[],int n)
您稍后在尝试分配数组时也会遇到错误:
t[i].type=GetNumber("Give the transaction type:");
t[i].desc=GetNumber("Give the descripition:");
由于GetNumber
可能会返回一个数字,因此不清楚您要在那里做什么。
答案 1 :(得分:3)
C ++有int &n
之类的引用; C没有。
删除&
。
您在向t[i].type
和t[i].desc
分配号码时遇到问题。它们是字符串,你不能分配这样的字符串,你应该使用类似void GetString(const char *prompt, char *buffer, size_t buflen);
的东西来进行读取和赋值:
GetString("Give the transaction type:", t[i].type, sizeof(t[i].type));