C определение типа указателя на структуру

Можно приписать это поведение основному намерению позади создания Перечислений... для создания ряда именованных констант, которые могли только указать (или значение по умолчанию) значения в зависимости от базового типа.

существует два отдельных вопроса для рассмотрения, как связано с вопросом:

  1. Enum значение нельзя рассматривать как интервал по умолчанию, потому что затем Вы смогли бы обеспечить любой целое число и не будет никакой проверки времени компиляции для проверки этого, обеспеченное целое число действительно на самом деле существует как значение в Перечислении.

  2. Кастинг становится необходимым, так как Вы пытаетесь преобразовать из управляющего типа (типа YourCustomEnum, который происходит из System.Enum класс) к базовому типу, т.е. int или byte, и т.д.

35
задан usr 7 December 2017 в 11:05
поделиться

5 ответов

Absolutely valid. Usually, you can take full advantage of this way by defining two types together:

typedef struct
{
 int a;
 int b;
} S1, *S1PTR;

Where S1 is a struct and S1PTR is the pointer to this struct.

55
ответ дан 27 November 2019 в 06:45
поделиться

Yes it is valid. If you need more "security" you can also do

typedef struct vector_{
        double x;
        double y;
        double z;
} *vector;

then you can use both

struct vector_ *var;
vector var;

But don't forget the ending semi-colon.

Using only typedef means that you name it that way. otherwise it'd be more or less anonymous.

3
ответ дан 27 November 2019 в 06:45
поделиться

Это допустимый тип, он определяет новый тип. Как сказал @Alex, было бы полезно определить тип и тип указателя.

Вы можете создать больше указателей, просто используя

S1PTR ptr1, ptr2, ptr3, ...;  

вместо

S1 *ptr1, *ptr2, *ptr3, ...;
2
ответ дан 27 November 2019 в 06:45
поделиться

Да, это действительно так, как описано в ответах выше. Небольшое предложение, было бы лучше, если бы вы также указали имя тега, как показано ниже. Это поможет некоторым IDE лучше проанализировать ваш код.

typedef struct vactor_tag {
        double x;
        double y;
        double z;
} *vector;
1
ответ дан 27 November 2019 в 06:45
поделиться

yes...saves you the trouble of constantly typing the word 'struct' everytime you declare the vector struct or a pointer to it.

-2
ответ дан 27 November 2019 в 06:45
поделиться
Другие вопросы по тегам:

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