выражение должно иметь указатель на тип объекта со структурами - PullRequest
0 голосов
/ 15 мая 2019

* Я нахожу свою ошибку. c уже был int в этой программе. Это была большая программа (для меня), и у меня было 20 переменных, и я запутался. благодарю вас. кстати, эта опция для копирования структуры сработала для меня в конце концов.

Я пытаюсь скопировать структуру, и она говорит мне, что мне нужно поставить указатель, я думаю. Я хотел бы отметить, что я не использовал указатели во всех моих программах.

Я сделал код игры. это код 500 сотен и работал без сбоев, пока я не попытался скопировать структуру. Я сравнил это со многими людьми, которые были похожи на меня, и у них нет моей проблемы. Я также искал во всей сети. Мне было написано два типа ошибок, которые я добавлю ниже. спасибо!

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

typedef struct player {
    char name[ARR_SIZE]; // player's name, up to 20 chars
    int age; // player's age, 0 - 120
    int defense; // defense power, 1 - 100
    int attack; // attack power, 1 - 100
}player;

typedef struct team {
    char name[ARR_SIZE]; // team's name
    int numberOfPlayers; // number of players in the team, up to MAX_PLAYERS
    player teamPlayers[MAX_PLAYERS]; // array of the team players
    int points; // the team points in the league
    int wins; // number of wins
    int draws; // number of draws
    int losses; // number of losses
}team;

team b[MAX_TEAMS_NUMBER];
team c[MAX_TEAMS_NUMBER]; (1)

** the part of the code itself**
int main ()
{
    for (int i = 0; i < number_of_teams; i++)
        {
            c[i] = b[i]; (2)
        }
}

Я обозначил цифры возле проблемных линий (1) «c»: «team [10]» отличается по уровням косвенности от «int» (2) В выражении должен быть указатель на тип объекта

1 Ответ

1 голос
/ 15 мая 2019

В C порядок кода очень важен. Здесь вы сначала пытаетесь создать массив «команд», а затем сообщаете компилятору, что такое «команда». Поскольку он будет читать ваш код построчно, он не знает, что такое команда, когда читает ваши 2 первые строки.

Вы должны переместить 2 первые строки после своих структур.

Имейте в виду, что эта проблема также может возникать с функциями: если вы используете функцию ДО ее объявления, компилятор обнаружит ошибку. (объявление не является реализацией, вы можете реализовать функцию внизу вашего кода, но вам нужно объявить ее с помощью прототипа.)

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