簡體   English   中英

C 動態分配 malloc 結構

[英]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));}

我將嘗試解釋我認為正在發生的事情,如果您能糾正我的邏輯,我將不勝感激:

  • 我們有一個名為 Callum 的 Person 類型的指針。
  • 'Callum = malloc(sizeof(*Callum));' => 這是否意味着我們的變量 callum 已經在堆上分配了我們結構的內存大小?
  • Person 指向我們的變量 Callum。 編輯:對不起,我輸入時弄糊塗了,我的意思是個人指向我們的結構人。
  • 程序讀入一個輸入並將其分配給個人的地址,這是我們變量 Callum 的位置。 然后我們打印 Callum 的值。

對不起,這讓我的大腦嘎嘎作響。 我知道結構和指針的基本機制,但我無法想象正在發生的事情。 任何幫助,將不勝感激。 謝謝你。

在您的代碼中,

  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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM