gpt4 book ai didi

c++ - 如何将变量定义传递给函数?

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:47 25 4
gpt4 key购买 nike

我正在尝试将 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);
}

最佳答案

在您的示例中,在您的打印函数中,您尝试使用您称为 fruitTypetypedef 作为变量名。那是行不通的。


快速修复是:

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);


要返回修改后的值,最好使用第二种形式的变体:

void
changeFruit(fruitType *fruit)
{

strcpy(fruit->name,"Cherry");
}

关于c++ - 如何将变量定义传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58568088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com