ここで出そろったメモリにデータを格納するためのいれもの、変数、配列、構造体、構造体型の配列の違いを実際に数値データを格納、表示してみて確かめてみましょう。 数値1を格納し数値1を出力表示する場合 

アレサ 「さあ、ついにやってきました。


今日は


今まで出そろった


こちらの


素敵な4つの


       データ(数値、文字)のいれものさん


変数

配列

構造体

構造体型の配列  

さんに


いろいろなデータを代入していただき


そのデータをコマンドプロンプト画面にprinf出力表示していただきましょう。



それでは😊御登場お願いします。



ぞろぞろぞろぞろぞろ. . . . . . . .


アレサ「まずは もう メモリにデータを格納するときの


もっともシンプルな方法


変数さんです。うふふ」


変数 「いつも、おせわになりますう。


1日1回はでております」



アレサ 「一挙に数値のいれもの


配列変数をたくさんつくりだせる


優れものの


配列さんです。」



配列 「今日も楽しく数値データ格納するぞ」



構造体「カニとしじみがたべたい。」 


アレサ「2種類以上のタイプのデータを格納できる構造体さんです。


構造体さん


サーモン、玉子、いか、海老、穴子、のどぐろもご用意しております


ごゆっくりしていってください」


構造体型の配列 「あなたと構造体型の配列したい」


アレサ「2種類以上のタイプのデータを格納できる構造体型の配列をつくることのできる


構造体型の配列 さんです。


いまさらですが、簡単に言えば


配列さん とはまったく同じタイプの数値のいれもののあつまりのことです。


int型の配列なら


例えば

int str[5];

によってつくりだされる

配列変数

str[0]

str[1]

str[2]

str[3]

str[4]

のような


整数値データを格納するまったく同じタイプのいれもののあつまりであり


float型の配列なら 


例えば

float str[5];

によってつくりだされる

配列変数

str[0]

str[1]

str[2]

str[3]

str[4]

のような

 

実数値データを格納するまったく同じタイプのいれもののあつまりであり


構造体Cube型の配列なら 

構造体Cubeの定義が


typedef struct Cube{

int a;

float b;

}Cube ;

ならば


Cube str[5];


によってつくりだされる

配列変数

str[0].a

str[0].b

str[1].a

str[1].b

str[2].a

str[2].b

str[3].a

str[3].b

str[4].a

str[4].b

のような


整数値データや実数値データを複数格納できる


まったく同じタイプのいれもののあつまり


なのです。ね」


構造体の配列 


「そう、配列とはまったく同じタイプの数値のいれもののあつまり


配列変数のあつまりなのだ。


みんな 構造体の配列宣言して配列変数を作り


たくさんの実数値データや整数値データを格納していってね」


アレサ「みなさんをおもてなししつつ・・


実際にみなさんの活躍をみていただきましょう。


では、今日のお題は・・・・・


      

🍑数値データ1を格納し数値データ1をコマンドプロンプト画面にprintf出力表示🍑


となります。


ソーラー「超シンプルなお題が きたね。」



アレサ

「それでは 


1人目の方 変数さん、 お願いします。」


変数「それでは、いきま~す。」


#include <stdio.h>


int main(void)

{

int a;

a=1;

printf("%d\n",a);

return 0;

}


コンパイル結果

1


変数「毎度、ご利用いただきありがとう。\(^o^)/」


アレサ「変数さん、数値データ1を いとも簡単に格納されました。😊」


アレサ「お次は


配列さ~ん、 お願いします。」


配列 「こいこい 数値データ」


#include <stdio.h>


int main(void)

{

int str[1];

str[0]=1;

printf("%d\n",str[0]);

return 0;

}

コンパイル結果

1


アレサ「収める数値データの数が1つなので


配列さんは


配列宣言int str[1];

で[]の中の要素数の数を1にして


配列変数str[0]を


1つ作られました。


そうして できた


配列変数


str[0]に1を格納されたのです。


配列変数は


配列宣言int str[5];


と表記されたならば


[]の中に記入された要素、数値5の分だけ


str[0]を先頭に


順に


str[0]

str[1]

str[2]

str[3]

str[4]

生成されるのでしたね。」



配列「もっと 数値データ こいこい~~~」



アレサ「とても頼もしいです。ありがとうございます。


では、次の方


構造体さん お願いします。」



構造体「数値データ1を格納します


カニとウニの握り寿司おいしいいい💖~~~です」


アレサ「どうぞ、お召し上がりください


たくさんご用意いたしております。


お茶もご用意いたしておりますよ。」


構造体「中トロ、大トロ おかわりください」


アレサ「いくらでもございますのでご遠慮なさらないでください。」


構造体「巻きずしとおいなりもある・・・


ここはお寿司屋なのお・・・」


アレサ「デザートも豊富にございます。」


構造体 「うう~ん、このソフトクリーム、おいし~~ 


なになに? スイス製・・・


いかん、いかん


このまま突入すると


食レポになっちゃうよ。


数値データ1を格納します


#include <stdio.h>


struct SubetenosuutiData{

int a;

};


int main(void){

struct SubetenosuutiData subetenosuutiData;

subetenosuutiData.a=1;

printf ("%d\n",subetenosuutiData.a);

return 0;

}

コンパイル結果

1


ソーラー「おおっなんて 


豪華に数値データ1を格納、printf出力表示してくるんだ


しびれる~~~~~~~」


アレサ「ここでは


(この場合はすべての数値データといっても数値データ1しかありませんが) 


すべての数値データの中の数値データ1を


構造体変数のメンバ変数aに代入しているので


構造体変数名は


すべての数値データ


SubetenosuutiDataにしました


そして 数値データ1を格納するものは


(この場合は1しかありませんが) 


すべての数値データなので


構造体名は


SubetenosuutiDataにしました

(構造体と構造体変数の名前の付け方を決めてみようのエピソードをご覧ください)

そのようにして

構造体と

構造体変数の名前を設定してから


構造体SubetenosuutiDataを作製した後


subetenosuutiDataの構造体SubetenosuutiData型の構造体変数宣言


struct SubetenosuutiData subetenosuutiData;


を実行して


構造体変数subetenosuutiDataを作製し


そのメンバ変数であるaに数値データ1を代入したのですね。


ここでは


構造体名を変更できるtypedefを用いて


構造体名を

struct SubetenosuutiDataからSubetenosuutiData


へ変更していません。


structを省略しない


オーソドックスヴァージョンでプログラムが表記されています。」


構造体 「もちろん(^-^)、typedefをつかって


structを省略すると


プログラムは


#include <stdio.h>


typedef struct SubetenosuutiData{

int a;

}SubetenosuutiData;


int main(void){

SubetenosuutiData subetenosuutiData;

subetenosuutiData.a=1;

printf ("%d\n",subetenosuutiData.a);

return 0;

}

コンパイル結果

1


このようになるのだ 」


アレサ「typedefをつかい美しく構造体が表記されています」


ソーラー「構造体SubetenosuutiDataに


変数宣言

int a;


だけを取り込んできんだね」


アレサ「ではでは


お次は


構造体型の配列さん、お願いします」


構造体型の配列


「数値データ1だけでも もちろん格納可能なんだよ」


#include <stdio.h>


typedef struct SubetenosuutiData {

int a;

}SubetenosuutiData ;


int main(void){


SubetenosuutiData str[1];


str[0].a=1;


printf("%d\n" ,str[0].a);

return 0;

}

コンパイル結果

1


アレサ「


ここでは さきほどの


構造体変数宣言、初期化の


SubetenosuutiData subetenosuutiData;


SubetenosuutiData.a=1;


とよく似た


構造体型の配列宣言


SubetenosuutiData str[0];


str[0].a=1;

( str[0]のメンバ変数aの初期化)


がおこなわれています。


構造体に int aをとりこみ


その後


構造体SubetenosuutiData型の配列宣言


SubetenosuutiData str[1];


により

配列変数

str[0].a

を作り出し


str[0]の


メンバ変数aに


str[0].a=1;

のように


1を代入されたのですね。」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る