int main()
{
struct structItem item;
item.age = 1;
item.price = 200;
printItem(item);
На этом этапе вы передаете всю структуру функции printItem()
. Компилятор (семантически, если не на самом деле) скопирует структуру во временное хранилище для вашей функции. Если вы хотите передать адрес структуры item
, измените вызов:
printItem(&item);
Вам все равно придется изменить прототип для printItem()
, так как это не разрешено C:
void printItem(const struct structItem &item)
GCC выдает ошибку:
$ make item
cc item.c -o item
item.c:8:40: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
Измените &
на *
в прототипе функции, чтобы объявить, что функция принимает указатель на structItem
, измените функцию, чтобы использовать ->
для доступа к элементам структуры через указатель, и полная программа:
#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;
}