我正在尝试将firstFruit传递给函数printFruit。但是我收到了错误消息:“。”令牌之前有预期的主表达式。
如果我使用的是可返回值的函数,怎么还可以返回fruitType?
#include <stdio.h>
#include <string.h>
typedef struct fruitType_struct {
char name[51];
char color[11];
int fat;
int sugar;
int carbonhydrate;
} fruitType;
void printFruit(var fruitType){
printf("Your fruit is...\nFruit: %s\nColor: %s\nFat: %d\nSugar: %d\nCarbonhydrate: %d\n\n", fruitType.name, fruitType.color, fruitType.fat, fruitType.sugar, fruitType.carbonhydrate);
}
int main(void) {
fruitType firstFruit;
fruitType yourFruit;
strcpy(firstFruit.name, "Banana");
strcpy(firstFruit.color, "Yellow");
firstFruit.fat = 1;
firstFruit.sugar = 15;
firstFruit.carbonhydrate = 22;
printFruit(firstFruit);
}
答案 0 :(得分:0)
在您的示例中,在打印功能中,您尝试将调用typedef
的{{1}}用作变量名。那行不通。
快速解决方法是:
fruitType
但这会通过{em> value 传递void
printFruit(fruitType fruit)
{
printf("Your fruit is...\nFruit: %s\nColor: %s\nFat: %d\nSugar: %d\nCarbonhydrate: %d\n\n",
fruit.name, fruit.color, fruit.fat, fruit.sugar, fruit.carbonhydrate);
}
。 (即)必须将struct
的全部内容压入堆栈。
通过指针/引用(即)仅将指向struct
的指针压入堆栈会更有效:
struct
要使用第二种形式,请从void
printFruit(const fruitType *fruit)
{
printf("Your fruit is...\nFruit: %s\nColor: %s\nFat: %d\nSugar: %d\nCarbonhydrate: %d\n\n",
fruit->name, fruit->color, fruit->fat, fruit->sugar, fruit->carbonhydrate);
}
致电:main
要返回修改后的值,最好使用第二种形式的变体:
printFruit(&firstFruit);
答案 1 :(得分:0)
要从功能返回水果类型,只需返回水果类型的变量
#include <stdio.h>
#include <string.h>
typedef struct fruitType_struct {
char name[51];
char color[11];
int fat;
int sugar;
int carbonhydrate;
} fruitType;
void printFruit(fruitType fruit)
{
printf("Your fruit is...\nFruit: %s\nColor: %s\nFat: %d\nSugar: %d\nCarbonhydrate: %d\n\n",fruit.name, fruit.color, fruit.fat, fruit.sugar, fruit.carbonhydrate);
}
fruitType getFruit(const char * a,const char * b , int c,int d,int e)
{
fruitType firstFruit;
strcpy(firstFruit.name, a);
strcpy(firstFruit.color, b);
firstFruit.fat = c;
firstFruit.sugar = d;
firstFruit.carbonhydrate = e;
return firstFruit;
}
int main(void) {
fruitType firstFruit;
fruitType yourFruit;
strcpy(firstFruit.name, "Banana");
strcpy(firstFruit.color, "Yellow");
firstFruit.fat = 1;
firstFruit.sugar = 15;
firstFruit.carbonhydrate = 22;
printFruit(firstFruit);
yourFruit = getFruit("Jackfruit","Green",1,11,157);
printFruit(yourFruit);
}
输出:
您的水果是...水果:香蕉颜色:黄色脂肪:1糖:15 碳水化合物:22
您的水果是...水果:菠萝蜜颜色:绿色脂肪:1糖:11 碳水合物:157