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

てんC「


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

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


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に

変更しています。


1つのchar型の変数aのアドレスデータをchar*型のポインタ変数を使ってメモリに格納するなら


char* pta=&a;


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


1つのint型の変数bのアドレスデータをint*型のポインタ変数を使ってメモリに格納するなら


int* pta=&a;


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




複数の数値データを簡単に配列を使ってメモリに格納する場合は


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


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


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

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

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



簡潔にはできませんが

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


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


先程の

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


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


そのため


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


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


おまけ


複数のchar型の変数のアドレスデータ(char*型のアドレスデータ)を簡単に配列を使ってメモリに格納するなら


char a;

char b;

char c;



char* hairetu[3]={&a,&b,&c};


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



複数のint型の変数のアドレスデータ(int*型のアドレスデータ)


を簡単に配列を使ってメモリに格納するなら


int* hairetu[3]={&a,&b,&c};


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



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を


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


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


void newmadefunction(int hairetu[])

と記述


あるいは


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


void newmadefunction(int* hairetu)


と表記します


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

作製された


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


int型の変数を使ってメモリに数値データが格納されているときの


そのメモリのアドレスを格納します


つまり


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


int型の配列変数


newhairetu[0]

newhairetu[1]

newhairetu[2]


が生成されていて整数値データが格納されています


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


その整数値データが格納されている


int型の配列変数newhairetu[0]のアドレスを


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


int*(イントアスタリスク)型のポインタ変数となっています


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


を受け取るために


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


int* hairetu


void newmadefunction(int* hairetu)のように


自作関数newmadefunctionの引数として記述しているというわけです



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



1つの配列宣言

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


コンピュータのメモリに

数値データ

文字データ

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


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




1つの配列宣言

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


コンピュータのメモリに

数値データ

文字データ

文字列データ

を格納するときの表です

👇

1つの配列宣言を使った場合

😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇配列を使った場合

😝一つの数値データをメモリに格納する場合😇 ◎

😝複数の数値データをメモリに格納する場合😇 ◎

😋一つの文字データをメモリに格納する場合😇 ◎

😋複数の文字データをメモリに格納する場合😇 ◎

😋一つの文字列データをメモリに格納する場合😇 ◎

😋複数の文字列データをメモリに格納する場合😇 ◎(2次元配列を使用してね💖)


1つのポインタ変数宣言を使った場合

😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇😇

😝一つの数値データをメモリに格納する場合😇◎(???)😇

😝複数の数値データをメモリに格納する場合😇できません😇

😋一つの文字データをメモリに格納する場合😇◎😇

😋一つの文字列データをメモリに格納する場合😇◎😇

😋複数の文字データをメモリに格納する場合😇できません char*型の配列宣言(ポインタ変数の配列宣言)

を用いてください😇


char*型の配列宣言を用いる場合


😋複数の文字列データをメモリに格納する場合😇◎😇


となります


おまけ


int*型の配列宣言を用いる場合


😋複数の変数のアドレスデータをメモリに格納する場合😇◎😇



となります



◎は可能ですが


ポインタ変数を使って

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



☆は


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

複数の数値データを

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

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

複数回くりかえせば


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


しかし かなり手間です


ですから



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

複数の数値データを

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


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


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





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


ポインタ変数とは


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


                           


        🌞 ポインタ変数をつかえば 🌞


     🌞 すでに変数に格納されているデータに 🌞


         🌞 アクセスして 🌞


  🌞 変数に格納されているデータを変更することができるんだね🌞




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


main関数内で変数宣言された変数aのアドレス&aを


ptx=&a;


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


*ptxをもちいて変数aに格納されている値を変更する


つまり


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


その1例だね。」



てんC 「とりあえずポインタ変数のお話は


このエピソードで おしまいとなります。


いかがでしたか?」


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


おおっやった・・・」


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


てんC「な、なにがおこっているのでしょうか?」




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


        🌞 ポインタ変数をつかえば 🌞


     🌞 すでに変数に格納されているデータに 🌞


         🌞 アクセスして 🌞


  🌞 変数に格納されているデータを変更することができるんだね🌞


              再び


呼ばれてでてきたこの僕


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



そう、そう、そう


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


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


ねえーー


勉強してってぇ~~~」


ソーラー「あれ、


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


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


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


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


てんCとソーラーの前に


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


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


おおおぅぉぉぉおお


そう、フィーナちゃんだ


こんなところで・・・


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


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


フィーナに激しくせまる。


おろおろと動揺するフィーナ。


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


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


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


そう、そうなのか


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


お茶目さんめ・・


嬉しいよ・・・


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


てんC 「はっ・・フィーナさん・・・?」


ポインタ変数「フィーナさんじゃないっ!ぅて


このカクヨムで


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


そ・れ


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


わかるぅ


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


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


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


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


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


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


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


やっぱり そうだよねぇ」


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


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


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


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


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


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


そう


この僕


ポインタ変数


使っていったら


もう簡単ン簡単ン


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


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


いいじゃ~ん ね」


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


握手を交わす


ポインタ変数とてんCとソーラー


てんC「ポインタ変数さん


これからもよろしくお願いしますね。」




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


ポインタ変数は


プログラムのいたるところで登場します


ポインタ変数の仕組みは


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


みなさん


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

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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