int**型のポインタ変数を用いればmalloc関数を2度用いることにより2次元配列的にメモリを確保することができます
ソーラー「🌞どう?🌞
int** a;
a = (int**)malloc(sizeof(int*)*2);
を実行して動的にメモリを確保したとき
確保したメモリの先頭のアドレスが
int**型のポインタ変数aに格納されることになります
int**型のポインタ変数aには
💖アドレスが代入されるので💖
aに[]演算子を用いた
a[0]
a[1]
に
データを代入することができるようになります
そのデータとはアドレスであり
生成される
a[0]
a[1]
は
int*型のポインタ変数なのです
a[0]
a[1]
は
int*型のポインタ変数なので
さらに
a[0] = (int*)malloc(sizeof(int)*3);
a[1] = (int*)malloc(sizeof(int)*3);
を実行して
int*型のポインタ変数
a[0]
a[1]
を用いて動的にメモリを確保することができます
a[0] = (int*)malloc(sizeof(int)*3);
が実行されると
malloc(sizeof(int)*3)
により
intは4バイトのデータ格納容量を持つため
12バイト分のメモリが確保されます
そのメモリの先頭のアドレスが
戻り値として
malloc(sizeof(int)*3)
に返されることになるのですが
malloc(sizeof(int)*3)をint*型にキャストすることにより
int*型のポインタ変数a[0]に確保したメモリの先頭のアドレスを代入することができます
同様に
a[1] = (int*)malloc(sizeof(int)*3);
が実行されると
malloc(sizeof(int)*3)
により
intは4バイトのデータ格納容量を持つため
12バイト分のメモリが確保されます
そのメモリの先頭のアドレスが
戻り値として
malloc(sizeof(int)*3)
に返されることになるのですが
malloc(sizeof(int)*3)をint*型にキャストすることにより
int*型のポインタ変数a[1]に確保したメモリの先頭のアドレスを代入することができます
int*型のポインタ変数
a[0]
a[1]
にアドレスが代入されることにより
a[0]に[]演算子を用いた
a[0][0]
a[0][1]
a[0][2]
a[1]に[]演算子を用いた
a[1][0]
a[1][1]
a[1][2]
をもちいてデータを格納することができるようになります
このとき
a[0]に[]演算子を用いた
a[0][0]
a[0][1]
a[0][2]
a[1]に[]演算子を用いた
a[1][0]
a[1][1]
a[1][2]
は
int型の配列変数であり
int型の配列変数
a[0][0]
a[0][1]
a[0][2]
a[1][0]
a[1][1]
a[1][2]
には
整数値データを格納することができます
そのプログラムはこちらです
👇
#include <stdio.h>
#include <stdlib.h> /* malloc関数を用いるにはヘッダファイル<stdlib.h>をインクルードします*/
int main(void) {
int** a;
a = (int**)malloc(sizeof(int*)*2);
//malloc関数を用いてメモリを8バイト分確保しています
a[0] = (int*)malloc(sizeof(int)*3);
a[1] = (int*)malloc(sizeof(int)*3);
a[0][0]=1;
a[0][1]=2;
a[0][2]=3;
a[1][0]=4;
a[1][1]=5;
a[1][2]=6;
printf("%d\n",a[0][0]);
printf("%d\n",a[0][1]);
printf("%d\n",a[0][2]);
printf("%d\n",a[1][0]);
printf("%d\n",a[1][1]);
printf("%d\n",a[1][2]);
return 0;
}
ビルド実行結果
1
2
3
4
5
6
solarplexuss「
int型の配列変数
a[0][0]
a[0][1]
a[0][2]
a[1][0]
a[1][1]
a[1][2]
に数値を代入することができた
つまり
2次元配列aの配列変数
a[0][0]
a[0][1]
a[0][2]
a[1][0]
a[1][1]
a[1][2]
に
数値が代入することと等しいことがおこっちゃったっぴ🐤」
アレサ「ほんとですの
このような使い方が
int**型のポインタ変数にはあるのですね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます