我是一个相当有经验的 C++ 程序员,但是使用(纯!?)C 代码我有时会很吃力,尤其是当我有一段时间没有使用它的时候。有人可以提示我为什么下面的代码不起作用吗?编译器说:
syntax error : missing ')' before '&'
提示带有 printItem 签名的行。我怎样才能让它发挥作用?是将 printItem 签名更改为的唯一选项:
void printItem(const struct structItem *const item)
{
printf("age: %i, price: %i", item->age, item->price);
}
或者有其他方法可以让我保留下面的签名吗?此外,...我没有对结构使用更方便的“typedef”表示法,因为我记得一些问题 - 可能在这种情况下。如果有人能阐明这一切,我将不胜感激。
#include <stdio.h>
struct structItem {
int age;
int price;
};
void printItem(const struct structItem &item)
{
printf("age: %i, price: %i", item.age, item.price);
}
int main()
{
struct structItem item;
item.age = 1;
item.price = 200;
printItem(item);
getchar();
return 0;
}
最佳答案
在 C 中,您必须通过指针传递,因此您可以像这样定义 printItem
:
void printItem(struct structItem *item)
{
printf("age: %i, price: %i", item->age, item->price);
}
要调用它,请给它一个指针。例如:
printItem(&item);
关于对结构的 C 代码引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9370024/