Передача структуры в качестве указателя - PullRequest
1 голос
/ 27 сентября 2011

Я пытаюсь передать структуру в качестве указателя в аргументах функции. Вот мой код

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

Я получаю сообщение об ошибке "Передача автомобиля параметру несовместимого типа Car. Что мне не хватает?

Ответы [ 5 ]

6 голосов
/ 27 сентября 2011

Форвардная декларация должна быть:

void PrintCarDetails(Car * details); 
3 голосов
/ 27 сентября 2011

Возможно, вы неправильно определили объявление функции PrintCarDetails. Должно быть:

void PrintCarDetails(Car *details);

работает здесь

3 голосов
/ 27 сентября 2011

Определение функции отличается от объявления функции. В объявлении вы утверждаете, что в качестве аргумента должна использоваться структура Car, но в определении требуется указатель на структуру Car.

3 голосов
/ 27 сентября 2011
void PrintCarDetails(Car *details); 

*
отсутствует в предварительной декларации.
0 голосов
/ 27 сентября 2011

Это небольшая ошибка, определение и объявление вашей функции не совпадают:

  • строка 12: void PrintCarDetails(Car details);
  • строка 26: void PrintCarDetails(Car *details);

просто исправьте строку 12 с помощью: void PrintCarDetails(Car *details);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...