struct node
{
int coef;
int exp;
struct node *link;
};
typedef struct node *NODE;
Trả lời
Nó làm cho NODE
một typedef cho struct node *
.
điều gì sẽ là cách tốt hơn để viết mã này ... giữ nguyên ý nghĩa tương tự. – Skr
Cách tốt hơn là bỏ qua typedef và tham chiếu đến kiểu con trỏ là 'struct node *'. –
Nó định nghĩa NODE
như một từ đồng nghĩa với kiểu struct node *
, vì vậy khi bạn sẽ được tuyên bố một biến kiểu NODE
bạn sẽ thực sự tuyên bố một con trỏ đến struct node
.
Cá nhân, tôi không nghĩ rằng tuyên bố như vậy là một ý tưởng hay: bạn đang "giấu con trỏ" (và gần như luôn là ý tưởng tồi), và hơn nữa, bạn không làm nổi bật thực tế này theo bất kỳ cách nào vào tên mới.
+1 cho "Không ẩn các loại con trỏ phía sau typedef" –
+1 vì lý do tương tự. Đặt tên nó là 'nodeptr' thay cho' node' sẽ giúp ích, nhưng sau đó không có lý do gì để 'gõ''. –
"Đừng ẩn các loại con trỏ đằng sau typedef" ý bạn là gì bởi điều này – Skr
NODE
trở thành bí danh cho struct node*
.
EDIT: Được rồi, cho nhận xét (nếu tôi viết câu trả lời của tôi như bình luận, nó sẽ là quá dài và không định dạng):
Không có cách khác nhau để viết những dòng này. Ở đây, typedef
chỉ được sử dụng để tạo một từ đồng nghĩa/bí danh cho con trỏ đến struct node
.
Một ví dụ cho việc sử dụng sẽ là:
void f()
{
// some code
NODE p = NULL;
// do something with p
// for example use malloc and so on
// like: p = malloc(sizeof(struct node));
// and access like: p->coef = ..; p->expr = ..
// do something with p and free the memory later (if malloc is used)
}
cũng giống như
void f()
{
// some code
struct node* p = NULL;
// do something with p
}
Sử dụng NODE
làm cho nó chỉ ngắn hơn (dù sao, tôi sẽ không khuyên như vậy typedef
, như bạn đang giấu diếm, đó là con trỏ , không phải là struct
hoặc loại khác, như được đề cập trong câu trả lời của @Matteo Italia).
Định dạng, bạn đang tham chiếu: "typedef struct {} type_name format" là một thứ khác. Đó là một mẹo vặt trong C
, để tránh viết struct
từ khóa (vì nó bắt buộc trong C
và KHÔNG ở C++
). Vì vậy,
typedef struct node
{
//..
} NODE;
sẽ làm cho NODE
bí danh cho struct node
. Vì vậy, ví dụ tương tự như trên:
void f()
{
// some code
NODE p;
// do something with p
// note that now p is automatically allocated, it's real struct
// not a pointer. So you can access its members like:
// p.coef or p.expr, etc.
}
cũng giống như
void f()
{
// some code
struct node p;
// do something with p
}
Chú ý rằng bây giờ, p
là KHÔNG một con trỏ, nó struct node
.
nội dung
typedef struct node *NODE
cho biết điều gì?
nó cho thấy một người đã không biết được rằng chữ hoa LÀ KHÔNG TỐT
trữ ALL chữ hoa định danh cho macro.
Cheers & h.,
Ngoài ra, tôi không nghĩ rằng 'NODE' chứa '*' –
@ PeterLee: Cảm ơn, tôi không nghĩ đến chuyện đó. Hm, tôi thấy tò mò rằng câu trả lời được bỏ phiếu nhiều nhất là câu trả lời * không * trả lời câu hỏi về điều này "chỉ ra", và câu trả lời này, câu trả lời duy nhất cho câu hỏi, đã được bình chọn. Đó là SO. –
Thậm chí nếu bạn rất chắc chắn và mát mẻ. Ngay cả khi bạn có lời khuyên tốt cho vụ án. Nó không phải là quá tốt để làm nhục mọi người. B.t.w. nó không phải là câu trả lời thích hợp cho câu hỏi. Đây là nguyên nhân chính để giảm bớt câu trả lời. – I159
chỉ đơn giản nói với bạn có thể tạo con trỏ kiểu nút chỉ sử dụng NODE mỗi lần thay vì writting nút struct * mọi
- 1. Mục đích của nút "đầu tiên" trong khai báo: "typedef struct node {- - -} Node;"?
- 2. (node *) NULL có nghĩa là gì trong C?
- 3. Debug Node, điều gì đang giữ cho nó hoạt động?
- 4. Lấy tệp ra khỏi tệp JCR Node
- 5. Node-PerfectAPI vs Restify.js so với ExpressJS vs Node-APIServer
- 6. Node-webkit WinAPI
- 7. Node Express Content-Length
- 8. d3 Node Labeling
- 9. Arbor Js - Node Onclick?
- 10. C: typedef struct name {...}; VS typedef struct {...} tên;
- 11. Node JS Lỗi: ENOENT
- 12. etree Clone Node
- 13. typedef struct pointer definition
- 14. Node MySQL escape LIKE statement
- 15. Đọc First Node từ XMLDocument
- 16. Node JS LDAP Auth tài
- 17. Xác định Node của DOMElement
- 18. Node script ném uv_signal_start EINVAL
- 19. Node-waf: không tìm thấy
- 20. typedef struct: Khởi Mặc định
- 21. Đồng bộ hóa tệp với node.js: unision == tcp == node ----- [http] ----- node == tcp == unison
- 22. Cách kết thúc trả lời POST.js/node?
- 23. Bắt node cha thuộc tính trong XSL
- 24. Phương pháp chuẩn hóa Java Node làm gì?
- 25. Chạy ứng dụng Node thông qua Grunt
- 26. Coffeescript và node-supervisor với nhau?
- 27. fs.watch qua Node 0.5.9 trên Mac OSX
- 28. PDF to image on Node JS
- 29. Tải tệp lên máy chủ Node JS
- 30. Tự động hóa Jasmine-Node và express.js
Xin đừng ẩn các loại trỏ đằng sau typedefs trong mã thật mặc dù . –
hương vị xấu. SCNR – ninjalj
cách tốt nhất để viết mã này. Trong cấu trúc sách được sử dụng theo 3 đến 4 cách ... – Skr