将结构作为指针传递

时间:2011-09-27 10:44:21

标签: c

我正在尝试将结构作为函数参数中的指针传递。这是我的代码

#include <stdio.h>
#include <stdbool.h>
#include <string.h>

typedef struct {
    int yearOfManufacture;
    char model[50];
    bool gasoline;
} Car;


void PrintCarDetails(Car details);

int main (int argc, const char * argv[]) 
{        
    Car ford;
    ford.yearOfManufacture = 1997;
    ford.gasoline = true;
    strcpy(ford.model, "Focus");

    PrintCarDetails(&ford);

     return 0;
}

void PrintCarDetails(Car *details)
{
    printf("Car model %s", details->model);
}

我收到错误“将汽车传递给不兼容类型汽车的参数。我错过了什么?

5 个答案:

答案 0 :(得分:6)

转发声明应为:

void PrintCarDetails(Car * details); 

答案 1 :(得分:3)

void PrintCarDetails(Car *details); 
前向声明中缺少

*

答案 2 :(得分:3)

函数定义与函数声明不同。在声明中,您声明一个Car结构应该用作参数,但在定义中您需要一个指向Car结构的指针。

答案 3 :(得分:3)

你可能错过了PrintCarDetails函数的声明。 应该是:

void PrintCarDetails(Car *details);

工作here

答案 4 :(得分:0)

这只是一个小错误,你的函数定义和声明不匹配:

  • 第12行:void PrintCarDetails(Car details);
  • 第26行:void PrintCarDetails(Car *details);

只需修改第12行:void PrintCarDetails(Car *details);