Tôi hiện đang tìm hiểu về cấu trúc dữ liệu struct
trong C và cách có thể bắt đầu cấu trúc này bằng từ khóa typedef
. Điều này làm cho tên biến của cấu trúc thực được đặt trong không gian tên khác nhau như được giải thích trong tài liệu tham khảo khác nhau:struct mà không có từ khóa typedef
Difference between 'struct' and 'typedef struct' in C++?
typedef struct vs struct definitions
Tuy nhiên, nó không rõ ràng như những gì đang xảy ra với ví dụ mà tôi đang làm việc với:
#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;
}
Trong ví dụ này, tôi có thể truy cập vào cấu trúc struct
dữ liệu thông qua các biến synth
Tên; tuy nhiên, trong các ví dụ mà tôi đã thấy, để tôi có thể thực hiện điều này, struct
cần được bắt đầu bằng typedef
. Trong ví dụ này, typedef
không được sử dụng nhưng tôi vẫn có thể tham chiếu cấu trúc này thông qua synth
. Tôi tự hỏi chính xác những gì đang xảy ra mà C là cho phép tôi làm điều này? Mọi lời giải thích sẽ được đánh giá cao. Chúc mừng.
Bạn có quen thuộc với những gì 'typedef' làm gì? – ameyCU
'sizeof' mang lại kết quả của loại' size_t'. Chuỗi định dạng đúng cho giá trị 'size_t' là'% zu', không phải '% i' (là' int'). –
Cảm ơn thông tin 'size_t'. Từ những gì tôi hiểu, những gì 'typedef' làm là nó tạo ra một biến trong một không gian tên riêng biệt cho phép cấu trúc được tham chiếu mà không cần sử dụng' struct demo'. Không chắc chắn nếu bất cứ điều gì khác đang xảy ra đằng sau hậu trường. –