Cách đơn giản nhất để hỏi câu hỏi này là với một số mã:đúc con trỏ đến mảng kích thước cố định trong câu lệnh return
struct Point
{
int x;
int y;
int z;
int* as_pointer() { return &x; } // works
int (&as_array_ref())[3] { return &x; } // does not work
};
as_pointer
biên dịch, as_array_ref
không. Một diễn viên có vẻ là theo thứ tự nhưng tôi không thể tìm ra cú pháp thích hợp. Bất kỳ ý tưởng?
Vì vậy, bạn muốn trình biên dịch giả vờ rằng 'x' là, trên thực tế, một mảng của ba' int '? Không có gì đảm bảo rằng điều này sẽ hoạt động; các trình biên dịch có thể thêm phần đệm giữa các thành viên dữ liệu theo các cách khác với cách chúng đặt ra các mảng. –