Tôi đã rất ngạc nhiên khi chương trình sau không gặp sự cố.Truy cập các phần tử kết cấu bằng con trỏ
typedef struct _x {
int a;
char b;
int c;
} x;
main() {
x *ptr = 0;
char *d = &ptr->b;
}
Theo hiểu biết của tôi, nhà điều hành ->
có quyền ưu tiên cao hơn nhà điều hành &
. Vì vậy, tôi dự kiến chương trình sẽ gặp sự cố tại câu lệnh dưới đây khi chúng tôi cố gắng dereference con trỏ NULL tr
.
char *d = &ptr->b;
Nhưng tuyên bố &ptr->b
đánh giá địa chỉ hợp lệ. Ai đó có thể vui lòng giải thích nơi tôi sai?
Điều này tương tự như macro 'offsetof'. – ruslik