#c #typedef
#c #typedef
Вопрос:
У меня вопрос о typedef в c
например:
typedef const char* yes[5];
Предоставляет ли typedef альтернативное имя const char*, поэтому альтернативное имя const char * является yes[5]
? что yes[5]
здесь означает? и как создать два массива yes и инициализировать один из них?
Ответ №1:
Нет. Это объявляет тип, yes
который является массивом из пяти const char *
.
Посмотрите на эту ссылку и введите const char *yes[5];
внутри текстовой области.
Ответ №2:
Нет, это создает yes
новое имя для массива из 5 указателей на постоянные символьные данные.
Можно подумать, что выражение после typedef
выглядит как объявление, а имя в объявлении вместо этого считается именем нового типа, который является объявляемым типом.
Таким образом, typedef int x;
это x
новое имя для int
. Это не меняется с массивами.
Комментарии:
1. На самом деле этот синтаксис представляет собой массив из 5 указателей на const char, поскольку const char * совпадает с char const *
2. да, я согласен с Дэном Ф., он должен содержать 5 указателей на const char, а не 5 постоянных указателей на char