我正在尝试将结构作为函数参数中的指针传递。这是我的代码
#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);
}
我收到错误“将汽车传递给不兼容类型汽车的参数。我错过了什么?
答案 0 :(得分:6)
转发声明应为:
void PrintCarDetails(Car * details);
答案 1 :(得分:3)
void PrintCarDetails(Car *details);前向声明中缺少
*。
答案 2 :(得分:3)
函数定义与函数声明不同。在声明中,您声明一个Car结构应该用作参数,但在定义中您需要一个指向Car结构的指针。
答案 3 :(得分:3)
答案 4 :(得分:0)
这只是一个小错误,你的函数定义和声明不匹配:
void PrintCarDetails(Car details);
void PrintCarDetails(Car *details);
只需修改第12行:void PrintCarDetails(Car *details);