Что означает `const char * yes[5]` в этой строке кода?

#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