В настоящее время я изучаю структуру данных struct
в языке C и как можно префикс этой структуры с помощью ключевого слова typedef
. Это приводит к тому, имена переменных фактической структуры должны быть размещены в разных пространствах имен, как описано в нескольких различных ссылок:struct without typedef keyword
Difference between 'struct' and 'typedef struct' in C++?
typedef struct vs struct definitions
Однако неясно, что происходит с примером, что Я работаю с:
#include <stdio.h>
struct demo
{
short low_pass_vcf;
short filter_coupler;
short reverb;
short sequential;
} synth;
int main()
{
printf("Size of struct: %i\n", sizeof(struct demo));
printf("Size of struct: %i\n", sizeof(synth));
return 0;
}
в этом примере я могу получить доступ к структуре struct
данных через переменную synth
имя; однако в примерах, которые я видел, для того, чтобы я мог это сделать, struct
должен быть предваряем typedef
. В этом примере typedef
не используется, и все же я все еще могу ссылаться на эту структуру через synth
. Мне интересно, что именно происходит, что C позволяет мне это делать? Любое объяснение будет оценено. Приветствия.
Вы знакомы с чем 'typedef' делает? – ameyCU
'sizeof' дает результат типа' size_t'. Правильной строкой формата для значения 'size_t' является'% zu', а не '% i' (что для' int'). –
Спасибо за информацию 'size_t'. Насколько я понимаю, что означает 'typedef', так это то, что он создает переменную в отдельном пространстве имен, что позволяет ссылаться на структуру без необходимости использовать' struct demo'. Не уверен, что что-то еще происходит за кулисами. –