天国にいけるC言語入門 ヘキサ構造体 ver2.2126
char型の変数i、 char*型のポインタ変数j、 char**型のポインタ変数kは異なる型の変数であり それぞれ代入できるデータのタイプが決まっています
char型の変数i、 char*型のポインタ変数j、 char**型のポインタ変数kは異なる型の変数であり それぞれ代入できるデータのタイプが決まっています
ソーラー「アレサ~
char *a[3];
が実行されると
ポインタ変数
a[0]
a[1]
a[2]
が生成されたよね(*´▽`*)
ポインタ変数を用いれば
文字列データ
"apple"
"orange"
"kiwi"
などの文字列データをメモリに格納することができました
そのときのプログラムがこちらです
👇
#include <stdio.h>
int main() {
char*a[3];
a[0] = "apple";
a[1] = "orange";
a[2] = "kiwi";
printf("%s\n", a[0]);
printf("%s\n", a[1]);
printf("%s\n", a[2]);
return 0;
}
ビルド実行結果
apple
orange
kiwi
アレサ「
char*a[3];
の実行により
ポインタ変数
a[0]
a[1]
a[2]
が生成され
a[0] = "apple";
a[1] = "orange";
a[2] = "kiwi";
の実行により
メモリに
文字列データ
"apple"
"orange"
"kiwi"
が格納されています
ところで
ソーラーさん
ポインタ変数はアドレスを格納することのできる変数でした
となると
a[0] = "apple";
a[1] = "orange";
a[2] = "kiwi";
では
ポインタ変数
a[0]
a[1]
a[2]
に
アドレスが代入されているのですか?」
ソーラー「そこはいいところを・・・
そうなんだよ
a[0] = "apple";
a[1] = "orange";
a[2] = "kiwi";
では
ポインタ変数
a[0]
a[1]
a[2]
に
アドレスが代入されています
文字列データが代入されているのではありません
ポインタ変数
a[0]には
文字列データ
"apple"
を格納しているメモリの先頭のアドレスが
a[1]には
文字列データ
"orange"
を格納しているメモリの先頭のアドレスが
a[2]には
文字列データ
"kiwi"
を格納しているメモリの先頭のアドレスが
代入されています
そして
ポインタ変数
a[0]
a[1]
a[2]
に
%s出力変換指定子を作用させてprintf出力表示すると
apple
orange
kiwi
がコマンドプロンプト画面に表示されることになります」
アレサ「
a[0] = "apple";
a[1] = "orange";
a[2] = "kiwi";
では
ポインタ変数
a[0]
a[1]
a[2]
に
直接
文字列データ
"apple"
"orange"
"kiwi"
が代入されているわけではないのですね」
ソーラー「そうなんだよ
char型の変数iには
char i='a';
文字データ'a'を格納することができます
char*型のポインタ変数jには
char* j=&i;
のように
文字データ'a'を格納しているメモリのアドレス&i
が
格納されることになります
char**型のポインタ変数kには
char** k=&j;
のように
文字データ'a'を格納しているメモリのアドレス&iを格納しているポインタ変数jのアドレス&jが
格納されることになります
このように
char型の変数i
char*型のポインタ変数j
char**型のポインタ変数kは
は異なる型の変数であり
それぞれ代入できるデータのタイプが決まっている🌞
というわけなんだね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます