#arrays #c #struct
Вопрос:
У меня есть пользовательская структура под названием pair, которая имеет два аргумента: int победитель и int проигравший
typedef struct
{
int winner;
int loser;
}
pair;
У меня также есть массив пар, называемых парами, но когда я пытаюсь добавить пару в массив, он говорит,
tideman.c:157:37: error: expected expression
pairs[pair_count] = {i, j};
Есть ли проблема с использованием обозначений в фигурных скобках для добавления структур в массивы в C? Если я создам переменную для добавления пар, будет ли она изменять все пары в массиве каждый раз, когда я добавляю новую пару (из-за проблем с изменчивостью)?
for (int i = 0; i < candidate_count; i )
{
for (int j = 0; j < candidate_count; i )
{
if (preferences[i][j] > preferences[j][i])
{
pairs[pair_count] = {i, j};
}
}
}
Ответ №1:
{i, j}
будет работать только при инициализации ( pair x = {i, j};
). pairs[pair_count] = {i, j};
было бы назначение, и там вам нужна переменная типа pair
в правой части. Самый простой способ получить его-использовать составной литерал pairs[pair_count] = (pair){i, j};
. Кроме того, вы можете назначить каждому участнику отдельно ( pairs[pair_count].winner=i; pair[pair_count].loser=j;
).