Что здесь делает typedef?

#c #typedef

Вопрос:

Я знаю, что typedef позволяет вам присваивать псевдоним типу, но что происходит в основной функции?

 const int LOTTERY_SIZE = 5;
typedef int LotteryNumbers[LOTTERY_SIZE];
 

Поскольку LotteryNumbers-это массив int, лотерея и пользователь также являются массивом int?

 int main(){
    LotteryNumbers lottery, user;
}
 

Комментарии:

1. Я также хотел спросить, будет ли у пользователя и лотереи размер LOTTERY_SIZE.

2. typedef используется для определения типа. Отсюда «тип def». Все, что относится к типу «Номера лотерей», на самом деле будет массивом int длиной 5

3. Может LOTTERY_SIZE * sizeof(int) быть, байты.

4. Может using быть, синтаксис был бы понятнее: using LotteryNumbers = int[LOTTERY_SIZE];

Ответ №1:

Код объявляет оба lottery и user как переменные, тип которых является LotteryNumbers , который был определен как другое имя для «массива int длины 5″.

Это равносильно написанию

 int main(){
    int lottery[5];
    int user[5];
}
 

Комментарии:

1. Это неочевидно для людей, незнакомых с C , хотя, поскольку [5] часть каким-то волшебным образом переходит с левой стороны объявления на правую сторону объявления, чего не произошло бы, если бы они использовали a #define вместо a typedef (или даже C-style typedef для типа указателя)