ポインタ変数や配列をつかって数値や文字、文字列 をコンピュータのメモリに格納する方法 まとめ

アレサ「


ポインタ変数や配列をつかって数値データや文字データ、文字列データ

をコンピュータのメモリに簡単に格納する方法をまとめてみました。


1つの数値データを変数に格納するなら

int a=1;

float b=1.11111;など


1つの文字データを変数に格納するなら

char a='b';


1つの数値データを配列に格納するなら

int hairetu[5]={1};


1つの数値データをポインタ変数を使ってメモリに格納するなら


int a;

int *pta;(ptaのポインタ変数宣言)

pta=&a;(ポインタ変数ptaに変数aのアドレスを格納)

*pta=1;

と表記します

👆

これらの命令文により

変数aのアドレス番号の付いたメモリに数値1が

格納されることになります

変数aは初期化されていなければ

4198543

などのような数値を格納していますが

int *pta;(ptaのポインタ変数宣言)

pta=&a;(ポインタ変数ptaに変数aのアドレスを格納)

*pta=1;(変数aのアドレス番号の付いたメモリに数値1を格納)

を実行して

変数aのアドレス番号の付いたメモリに格納されている数値4198543を1に

変更しています。




複数の数値データを簡単に配列に格納する場合は


int hairetu[5]={1,2,3,4,5};


のように命令文を記述します。


複数の数値データを簡単にポインタ変数を使って格納する方法は

先のエピソードでもみてきたように

なしです(⋈◍>◡<◍)。✧♡💖



簡潔にはできませんが

複数の数値データをポインタ変数を使って格納するには


格納したい数値をひとつずつ


先程の

「一つの数値データをポインタ変数を使って格納する方法」


を使って格納していきます。


そのため


格納したい数値データの数だけ


変数とポインタ変数を用意することになるのです。




1つの文字データを配列に格納する場合は

char hairetu[ ]={'n'};


1つの文字データをポインタ変数を使って格納する場合は

char *hairetu={'n'};


複数の文字データを簡単に配列に格納する場合は

char hairetu[ ]={'n','e','k','o'};


複数の文字データを簡単にポインタ変数に格納する場合は

char *hairetu={'n','e','k','o'};


と表記します。



一つの文字列データを配列に格納する方法は

char hairetu[]="neko";


一つの文字列データをポインタ変数に格納する方法は

char *hairetu="neko";


と表記するのでしたね。


複数の文字列データを簡単に1度に配列に格納する方法は


たとえば


文字列データ

"apple"

"ringo"

"cashewnuts"

配列に格納する場合は


2次元配列をつかって

char hairetu[3][11]={"apple","ringo","cashewnuts"};

のように

記述するのでしたね

💖💖💖


詳しくは


🌞🌞複数の文字列データを1つの配列宣言を使い同時にメモリに格納してみます その2

https://kakuyomu.jp/works/1177354054881541503/episodes/1177354054886412378


のエピソードをご覧ください


簡単でない方法は


格納したい文字列データの数だけ配列宣言をおこなっていきます。


例 文字列データ

"neko"

"tanoshii"

"konnbu"を配列を使ってメモリに格納したいなら


次のように1つずつ異なる配列宣言をおこなって


配列に格納していきます。


char hairetu[]="neko";

char hairetu1[]="tanoshii";

char hairetu2[]="konnbu";


複数の文字列データをポインタ変数をつかって格納する場合は


char *hairetu={"neko","funnjyatta"};


となります。


🐓. . .

   🐦. .

ちょおっと おまけです


上記とは関係ないことですが


例えば


main関数内で定義されたint型配列newhairetuのアドレスを


格納しているポインタ変数newhairetuを


自作関数の引数に参照渡しする場合は


int型配列hairetu[]を自作関数の引数にもちいて


void newmadefunction(int hairetu[])


あるいは


int *(イントアスタリスク)型のポインタ変数宣言を自作関数の引数にもちいて


void newmadefunction(int *hairetu)


と表記します


なぜなら


int *(イントアスタリスク)型のポインタ変数宣言により


作製された


int *(イントアスタリスク)型のポインタ変数hairetuは


int型の形式でメモリに数値データが格納されているときの


そのメモリのアドレスを格納するからです


つまり


main関数内で定義されたint型配列newhairetuには


int型の配列変数が生成されていて


int型の形式でメモリに整数値データが格納されています


その整数値データが格納されているメモリのアドレスを


格納しているポインタ変数newhairetuを受け取るので


int *(イントアスタリスク)型のポインタ変数宣言


int *hairetu



void newmadefunction(int *hairetu)のように


自作関数の引数として記述します。



🐧. . .  🐧 . . .  🐧 . . .



1つの配列宣言

1つのポインタ変数宣言を使って


コンピュータのメモリに

数値データ

文字データ

文字列データが格納できるかどうかを


あらわす表を作製してみました




1つの配列宣言

1つのポインタ変数宣言を使って


コンピュータのメモリに

数値データ

文字データ

文字列データ

を格納するときの表

😇😇😇😇😇😇😇😇😇😇😇配列😇 ポインタ変数

😝一つの数値を格納する場合😇 ◎😇😇😇◎(???)😇

😝複数の数値を格納する場合😇 ◎😇😇😇̻̻☆😇

😋一つの文字を格納する場合😇 ◎😇😇😇◎😇

😋複数の文字を格納する場合😇 ◎😇😇😇◎😇

一つの文字列を格納する場合😇 ◎😇😇😇◎😇

複数の文字列を格納する場合😇 ◎😇😇😇◎😇


となります




◎は可能ですが


ポインタ変数を使って

一つの数値データを格納する場合は手間がかかります。



☆は


1つのポインタ変数宣言をつかって

複数の数値データを

コンピュータのメモリに格納できないことをあらわしています

一つの数値データをポインタ変数をつかってメモリに格納する場合を


複数回くりかえせば


コンピュータのメモリに複数の数値データを格納できます


しかし かなり手間です


ですから



1つのポインタ変数宣言を使って

複数の数値データを

コンピュータのメモリに格納できないときは


🍎1つの配列宣言を使って🍎


コンピュータのメモリに格納すればよいことになります





ソーラー 「大分 分類したね。


ポインタ変数とは


どのようなものか 考察してきたけど


                           


        🌞  ポインタ変数は 🌞


     🌞 すでにメモリに格納されている値に 🌞


         🌞 アクセスして 🌞


  🌞 格納されている数値を変更するはたらきがあるんだね。🌞





自作関数の引数にポインタ変数ptxを用い


main関数で定義された変数aのアドレスを


ptx=&a;


と代入する参照渡しを行うことにより


自作関数によって*ptxに格納されている値に操作を加え


変数aのアドレスのメモリに格納されている値に操作を加え


main関数内で定義された変数aの値を変更するというのも


その1例だね。」


アレサ 「とりあえずポインタ変数は


ここでおしまい


めでたし、めでたしっとなります。」


ソーラー「ポインタ変数 これでおわり・・・?


おおっやった・・・」


ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//

ぴこぴこりんりん🌞ぴこぴこりんりん🌞ぴこぴこりんりん🌞//


ソーラー「な、なんだ???なんだ??」


アレサ「きゃっ」




🐹🐹「お見事 ̄ ̄ ̄ ̄ ̄ ̄


      🌞  ポインタ変数は 🌞


     🌞 すでにメモリに格納されている値に 🌞


         🌞 アクセスして 🌞


  🌞 格納されている数値を変更するはたらきがあるんだね。🌞


呼ばれてでてきたこの僕


ポインタ変数デェイブレイクううっ



そう、そう、そう


あとは実際のプログラムの中で


ポインタ変数の使い方を勉強していけばいいと思うんだ。


ねえーー


勉強してってぇ~~~」


ソーラー「あれ、


君・・・君の名は・・・  」


ポインタ変数「君たちがマニアックに


ここまですすんでくれたおかげで


やっと現れることができたよ~・・・V」


アレサとソーラーの前に


ポインタ変数が、はしゃいであらわれる。


ソーラー 「君の名は・・・おもいだしてきたあああああ


おおおぅぉぉぉおお


そう、真名、真名だ


こんなところで・・・


今までどうしてたんだ・・・


僕、僕だよ ソーラーだよ」


真名に激しくせまる。


おろおろと動揺する真名。


ソーラー「おおおおおおんんんん


忘れたのかい ボケてるのかい?


ボケまっくってるのかい?


そう、そうなのか


こんなに元気ピンピン状態じゃないか・


お茶目さんめ・・


嬉しいよ・・・


10年前に別れ別れになった・・・」


アレサ 「はっ・・真名さん・・・?」


ポインタ変数「真名じゃないっ!ぅて


このカクヨムで


どっかで出た名前じゃないの


そ・れ


ここまでさんざんやってきた


わかるぅ


もうわかってるんだよねぇ?、ねえ


ポインタ変数はむずかしいていうもんで


いままで僕、かくれちゃっていたもんね。


ま、僕の存在を*ptaって*印つけといて


さりげなくアピールはしてたんだよ


さすがに 解説してる君たちには


最初から僕がみえてたみたいだけど・・・


やっぱり そうだよねぇ」


ソーラー「ポインタ変数・・なんかC言語キャラがでてこず


お話が静かに進んでいるとおもったら


目の前にかくれてたのか・・・」


ポインタ変数「これだけ登場しといて


うち ポインタ変数 僕のことがみえてなかったんか~い


まあ、もう、ぷんぷんんん


そう


この僕


ポインタ変数


使っていったら


もう簡単ン簡単ン


ルンルン状態が年中つづく、つづいていく~~


プログラム、たのし~ってなるわけぇぇ


いいじゃ~ん ね」


ソーラー「たのもしいな~ よろしくたのむね」


握手を交わす


ポインタ変数とアレサとソーラー


アレサ「ポインタ変数さんに


出会えて めでたし、めでたし ですの。」




             ポインタ変数が仲間になった。


ポインタ変数は


いたるところで登場します


ポインタ変数の仕組みは


C言語の基本的なシステムとなっています


みなさん


ポインタ変数をよろしくね🌞


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

作者を応援しよう!

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

応援したユーザー

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