ここで出そろったメモリにデータを格納するためのいれもの、変数、配列、構造体、構造体型の配列の違いを実際に数値データを格納、表示してみて確かめてみましょう。 数値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を宣言し


そのメンバ変数である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で共有
  • はてなブックマークでブックマーク

作者を応援しよう!

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

応援したユーザー

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