Nếu bạn cần trả lại struct
từ một hàm, bạn thường sẽ trả lại con trỏ tới số struct
.trả về một mảng các cấu trúc hoặc một mảng các con trỏ struct?
Nếu sau đó bạn muốn trả về một mảng của cấu trúc, là nó khuyến khích để:
- trở lại một mảng của cấu kiện (con trỏ đến phần tử đầu tiên)
- hoặc trả lại một mảng các con trỏ struct?
tôi đã rút ra một sơ đồ cho hai tùy chọn dưới đây:
1:
2:
Với định nghĩa struct sau
struct values {
int a;
int b;
};
đây là một số mẫu mã để truy cập vào các lĩnh vực của cấu trúc từ hai lựa chọn:
Lựa chọn # 1:
struct values *vals = get_values1();
printf("%d, %d\n", values[0].a, values[1].b);
Lựa chọn # 2:
struct values **vals = get_values2();
printf("%d, %d\n", values[0]->a, values[1]->b);
nghi ngờ của bạn là gì? –
@GrijeshChauhan điều gì là tốt nhất? Liệu nó có quan trọng không? – Tyilo
Vấn đề duy nhất tôi thấy không sử dụng phiên bản 1, có thể dễ dàng xác định số lượng cấu trúc trong phiên bản thứ hai, vì con trỏ 'NULL' có thể được sử dụng làm phần tử stopper, trong khi phiên bản đầu tiên có thể không thể xác định giá trị nút này. – alk