Tôi muốn phân bổ một cấu trúc trên heap, khởi tạo nó và trả về một con trỏ đến nó từ một hàm. Tôi tự hỏi nếu có một cách cho tôi để khởi tạo các thành viên const của một struct trong kịch bản này:Làm thế nào để khởi tạo const thành viên của cấu trúc trên heap
#include <stdlib.h>
typedef struct {
const int x;
const int y;
} ImmutablePoint;
ImmutablePoint * make_immutable_point(int x, int y)
{
ImmutablePoint *p = (ImmutablePoint *)malloc(sizeof(ImmutablePoint));
if (p == NULL) abort();
// How to initialize members x and y?
return p;
}
Tôi có nên kết luận từ này rằng không thể để phân bổ và khởi tạo một struct trên heap, trong đó có các thành viên const ?
Lưu ý rằng việc sử dụng .x và .y trong khởi tạo init là C99, bạn tất nhiên có thể sử dụng các mục không được đặt tên nếu trình biên dịch của bạn không hỗ trợ. – Trent
Brilliant, caf - cảm ơn bạn! – user268344
+1 Để làm rõ về 'malloc' giữa C và C++. –