[英]Passing array of struct with typedef to a function
我需要C编程方面的帮助。 我有以下情况:
struct Product {
int code;
char *name;
char *spec;
int quantity;
float price;
};
typedef struct Product products[8];
products product = {
{100, "Mouse", "Ottico", 10, 8.30},
{101, "Tastiera", "Wireless", 6, 15.50},
{102, "Monitor", "LCD", 3, 150.25},
{103, "Webcam", "USB", 12, 12.00},
{104, "Stampante", "A Inchiostro", 6, 100.00},
{105, "Scanner", "Alta Risoluzione", 9, 70.50},
{106, "Router", "300 Mbps", 10, 80.30},
{107, "Lettore Mp3", "10 GB", 16, 100.00}
};
请忽略上面使用的意大利语。
我想将名为“product”的结构数组传递给函数。 例如,如果我想做类似的事情
product[1].name = "Computer"
但是在一个函数里面,我应该怎么做呢? 我想知道如何从main()调用该函数以及如何在头文件中编写原型。
在此先感谢您的帮助。
编辑
我给你这个测试程序。 这个不起作用,甚至没有主要功能调用。 它只是不编译。
#include <stdio.h>
#include <stdlib.h>
void test(Card *card);
int main()
{
struct Card {
char *type;
char *name;
};
typedef struct Card cards[2];
cards card = {{"Hi", "Hi"}, {"Foo", "Foo"}};
return 0;
}
void test(Card *card) {
printf("%s", card[1].type);
}
这里:
void foo(struct Product *bla)
{
bla[1].name = "Computer";
}
或使用您的类型别名
void foo(products bla)
{
bla[1].name = "Computer";
}
然后像这样调用函数:
foo(product);
由于你有typedef(在你的例子中缺少一个struct
关键字,顺便说一句),你可以在函数原型中使用该类型:
void func(products p);
执行您询问的特定操作的函数可能是:
void func(products p)
{
p[1].name = "Computer";
}
你可以这样称呼它:
func(product);
从product
在范围内的任何地方。
typedef struct tag_Product {
int code;
char *name;
char *spec;
int quantity;
float price;
} PRODUCT;
PRODUCT products[8] = {
{100, "Mouse", "Ottico", 10, 8.30},
{101, "Tastiera", "Wireless", 6, 15.50},
{102, "Monitor", "LCD", 3, 150.25},
{103, "Webcam", "USB", 12, 12.00},
{104, "Stampante", "A Inchiostro", 6, 100.00},
{105, "Scanner", "Alta Risoluzione", 9, 70.50},
{106, "Router", "300 Mbps", 10, 80.30},
{107, "Lettore Mp3", "10 GB", 16, 100.00}
};
void MyFunction(PRODUCT *pProduct)
{
pProduct->code = 0; // sample
}
void main()
{
MyFunction(&products[2]); // sample
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.