Как я могу инициализировать массив указателей на структуры?

Поскольку вы не хотите выполнять что-либо из командной строки, я бы порекомендовал запустить сервер selenium, используя Selenium Standalone Server . Я не слишком знаком с Трэвисом, поэтому надеюсь / предполагаю, что вы можете установить его там.

15
задан Adam Bellaire 11 October 2008 в 23:58
поделиться

2 ответа

Это работает на меня:


struct country_t {
    char *fullname;
    char *shortname;
};

struct country_t countries[] = {
        {"United States of America", "America"},
        {"England", "Europe"},
        {"Ethiopia", "Africa"}
};

int main(int argc, char *argv[])
{
    return 0;
}

Вы могли быть более краткими и использовать:


struct country_t {
    char *fullname;
    char *shortname;
} countries[] = {
        {"United States of America", "America"},
        {"England", "Europe"},
        {"Ethiopia", "Africa"}
};

int main(int argc, char *argv[])
{
    return 0;
}

Редактирование: я нашел эту информацию в Книга

C
0
ответ дан 1 December 2019 в 02:10
поделиться

Ну, Ваш код использует структуры, а не указатели на структуры. Существуют способы сделать то, включая что Вы ищете:

static struct country_t us = { "United States of America", "America" };
static struct country_t uk = { "England",                  "Europe"  };
static struct country_t et = { "Ethiopia",                 "Africa"  };

struct country_t *countries[] = { &us, &uk, &et, };

существуют другие способы сделать это с обозначенными инициализаторами и составными литералами в C99. Разделите 6.5.2.5 'Составных Литерала', показывает путь:

struct country_t *countries[] =
{
    &(struct country_t) { "United States of America", "America" },
    &(struct country_t) { "England",                  "Europe"  },
    &(struct country_t) { "Ethiopia",                 "Africa"  },
};

стандарт иллюстрирует указатели на структуры с вызовом функции. Знайте, что не все компиляторы C принимают синтаксис C99, и эти составные литералы не присутствовали в C89 (иначе C90).

Редактирование: Обновленный для использования кодов страны ISO 3166 с 2 буквами. Также превращенный именованные структуры в статические переменные - те символы не были видимы вне файла прежде (потому что они не существовали), и теперь они не видимы вне файла после, также. Я дебатировал, сделать ли что-нибудь константой и решенный не к - кроме использования константы, когда Вы банка обычно являетесь хорошей идеей. Кроме того, в примере на 3 континентах существует 3 страны. Если бы у Вас должно было быть несколько стран на единственном континенте (норма), то Вы могли бы хотеть смочь совместно использовать сдержанные строки. Однако, ли можно сделать, это безопасно (или вообще) зависит от деталей struct country_t (которые не были даны), и на том, позволяют ли программе обновить таблицу (который возвращается к вопросу о мысе константы).

30
ответ дан 1 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: