Tôi đang làm việc thông qua Tìm hiểu C The Way cứng và đang đấu tranh để hiểu một cái gì đó trong Bài tập 16: Structs và con trỏ đến chúng.Tại sao có một con trỏ lồng nhau bên trong định nghĩa C struct?
struct Person *Person_create(char *name, int age, int height, int weight)
{
struct Person *who = malloc(sizeof(struct Person));
assert(who != NULL);
who->name = strdup(name);
who->age = age;
who->height = height;
who->weight = weight;
return who;
}
Tôi hiểu rằng cấu trúc Người trả về một con trỏ (* person_create) vào đầu cấu trúc. Nhưng tại sao có một định nghĩa struct thứ hai cho Person ngay lập tức lồng vào bên trong? Chỉ vào * ai?
Ai đó có thể làm sáng tỏ điều này cho tôi. Hoặc chỉ cho tôi hướng một lời giải thích tốt hơn các định nghĩa struct trong C.
Chúng tôi đang thiếu (nhưng có thể đoán) định nghĩa về 'struct Person' –
Không. Hàm 'Person_create' trả về một con trỏ tới một' Person'. Biến 'who' giữ giá trị được hàm trả về. Bạn cấp phát bộ nhớ và lưu bản sao của vị trí bộ nhớ. Sau đó bạn thiết lập các trường khác nhau của cấu trúc này trước khi cuối cùng trả về vị trí của bộ nhớ được cấp phát, trong trường hợp này, bắt đầu của một 'Person'. (bạn có được hang của chúng với tiếp tục sử dụng) :) - Con trỏ có một tương tự thô với số trang trong một cuốn sách - họ cho bạn biết nơi để tìm một cái gì đó, với lợi thế nhất của nói (theo loại của con trỏ) những gì sẽ có . – enhzflep