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

时间:2019-10-26 04:36:49

标签: c++ c

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

2 个答案:

答案 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