对结构的 C 代码引用

标签 c pass-by-reference

我是一个相当有经验的 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/

相关文章:

c++ - 使用 std::pairs 数组初始化 std::map 问题(指针错误?)

c - 使用 Allegro5 在 C 中播放声音文件

python - Photoshop 如何将字体格式转换为栅格化图层?

c - 为什么 fork() 会调用这个 print 语句?

C:指针=变量和指针=变量有什么区别?

c++ - 为函数内部的结构分配和初始化值

python - 通过引用传递 pandas DataFrame

c - 是否可以修改函数内结构体指针的内容?

c - 如何找出C中的整数边界

java - 将数组传递给函数 Java v/s C