[英]C dynamic allocation malloc struc
我正在學習我的操作系統課程的實踐,但我無法理解這個例子。 我已經運行了該程序,但它不起作用。
#include <stdio.h>
typedef struct {
int age;
float height;}Person;
void init(Person *);
int main() {
Person *Callum;
Callum = malloc(sizeof(*Callum));
init(Callum);
printf("Age: %d, height: %f\n", Callum.age, Callum.height);}
void init(Person * individual)
printf("Age: "); scanf("%d", &(individual->age));
printf("Height: "); scanf("%f", &(individual->height));}
我將嘗試解釋我認為正在發生的事情,如果您能糾正我的邏輯,我將不勝感激:
對不起,這讓我的大腦嘎嘎作響。 我知道結構和指針的基本機制,但我無法想象正在發生的事情。 任何幫助,將不勝感激。 謝謝你。
在您的代碼中,
void init(Callum * individual)
是錯的。 你需要寫
void init(Person * individual)
因為Person
是數據類型。 此外,該函數應括在大括號中,與main()
相同。
此外,在您的main()
,由於Callum
是指針類型,您應該使用指針成員取消引用運算符->
printf("Age: %d, height: %f\n", Callum->age, Callum->height);
也就是說,關於問題
Callum = malloc(sizeof(*Callum));
=> 這是否意味着我們的變量callum
已經在我們的堆上分配了我們struct
的內存大小?
malloc()
成功。
- Person 指向我們的變量 Callum
Callum
是一個指向Person
類型指針的變量。你需要做:
printf("Age: %d, height: %f\n", Callum->age, Callum->height);}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.