Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 構造体の動的割り当て | ポインタと構造体の操作
C構造体
セクション 2.  4
single

single

構造体の動的割り当て

メニューを表示するにはスワイプしてください

C言語でメモリを動的に割り当てる方法の確認。

ヒープ領域にメモリを割り当てるには、stdlib.hライブラリの**malloc()**関数を使用。

<pointer> = (data_type*)malloc(n * sizeof(data_type));
sizeof+struct
Note
注意

プログラムで動的にメモリを割り当てた場合、そのメモリはfree()で明示的に解放するまで確保されたままになる。

main.c

main.c

12345678910111213141516171819
#include <stdio.h> #include <stdlib.h> // structure definition struct Example { int someValue[20]; // int = 4 bytes, 20 * 4 = 80 bytes }; int main() { // allocating memory for Example structure struct Example* pExample = (struct Example*)malloc(sizeof(struct Example)); printf("Allocating memory = %zu bytes\n", sizeof(*pExample)); // freeing memory free(pExample); return 0; }

構造体が異なるデータ型の複数のフィールドを含む場合、コンパイラは構造体がメモリに「効率的に」格納されるように、フィールドのサイズを調整します。

作業が完了した後、intフィールドとcharフィールドを持つ構造体に割り当てられるバイト数に注目してください。この現象については、このコースの後半で説明します。

タスク

スワイプしてコーディングを開始

「Student構造体」を作成し、malloc()関数を使用してそのメモリを動的に確保する必要があります。 構造体にサンプル値を初期化し、そのポインタを返してください。

createStudent関数内では:

  1. malloc()を使って1つのStudent構造体分のメモリを確保します。
  2. メモリ確保が成功したかを確認します(失敗した場合はNULLを返します)。
  3. sprintf()を使ってデフォルトの名前(例:"Alice Johnson")を代入します。
  4. age21などの値を代入します。
  5. gpa3.85などの値を代入します。
  6. 確保した構造体へのポインタを返します。

main関数内では:

  1. 使用後にfree()関数を使って確保したメモリを解放します。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  4
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt