🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
ポインタ変数や配列をつかって数値やデータ、文字データ、文字列データをコンピュータのメモリに格納する方法 まとめ
ポインタ変数や配列をつかって数値やデータ、文字データ、文字列データをコンピュータのメモリに格納する方法 まとめ
てん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++言語の基本的なシステムとなっています
みなさん
ポインタ変数をよろしくね🌞
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます