scanf関数をつかって半角英数字1文字分の文字データをchar型の変数に格納する
scanf関数をつかって半角英数字1文字分の文字データをchar型の変数に格納する
ソーラー「scanf関数よ その尊い真の力を発揮したまえ
文字データをchar型の変数に取り込み給え」
しゅびびびび~~~ん
新種の蛇 scanf
「にょほほほ~い」
#pragma warning(disable: 4996)
#include <stdio.h>
int main(void)
{
char a;
scanf("%c",&a);
printf("%c",a);
return 0;
}
プログラムの実行結果
n(とキーボードから入力すると)
n
新種の蛇 scanf
「おいちい おいちい この文字n」
ソーラー 「な~んだ 文字データもchar型の変数aに格納できるじゃないか?」
新種の蛇 scanf
「にょほほほ~~い」
ソーラー 「まあ できるんじゃないかとはおもっていたんだけど
だって
👇
#include <stdio.h>
int main(void)
{
char a='n';
printf("%c\n",a);
return 0;
}
プログラムの実行結果
n
普通にchar型の変数aに 文字データ'n'を格納できていたものね。
(文字データ'n'とは正確には文字nの画像データに割り当てられたアスキーコードのことです)
scanf関数をつかって
文字データをchar型の変数aに格納できないわけもないか・・・
👇今のこのプログラムでは
#pragma warning(disable: 4996)
#include <stdio.h>
int main(void)
{
char a;
scanf("%c",&a);
printf("%c",a);
return 0;
}
プログラムの実行結果
n(と入力すると)
n
scanf関数を使って
char型の変数aのアドレス&aのメモリにあてて文字データ'n'が格納されているわけだ
(文字データ'n'とは正確には文字nの画像データに割り当てられたアスキーコードのことです)
そして 変数aに格納された文字データ'n'を
%c出力変換指定子をつかって printf出力表示したんだね。
(文字nの画像データに割り当てられたアスキーコードを使って文字をコマンドプロンプト画面に呼び出しています)
🍊🍊🍊🍊🍊🍊🍊🍊🍊🍊🍊🍊🍊🍊🍊🍊
以前のエピソードでアドレスについてお話ししましたが
ここでもアドレスについて説明してみます
☆char型の変数aのアドレスとは☆
char型の変数aには文字データが1文字格納されますが
そのとき 文字データが格納されるメモリに付けられている番号が
char型の変数aのアドレスとなります
char型の変数aは1バイトのデータ格納容量をもち
例えば
char a='a';
が実行されて
char型の変数aに文字データ'a'が格納されたなら
アドレス番号004FF913のメモリ(このアドレスの値はパソコンの使用状況などによって異なってきます)に
01100001 (10進数で表すと97です)
が格納されることになります
文字aの画像データには01100001 (10進数で表すと97です)
が割り振られていて
この
01100001 (10進数で表すと97です)
を用いて文字aの画像データにアクセスすることができるというわけです
int型の変数aのアドレスなら
int型の変数aには整数値が格納されますが
そのとき 整数値が格納されるメモリの中の先頭のメモリに付けられた番号が
int型の変数aのアドレスとなります
int型の変数aは4バイトの格納容量をもち
int a=2;
が実行されたとき
整数値2は
00000000 00000000 00000000 00000010
👆 👆 👆 👆
1バイト 1バイト 1バイト 1バイト
のようにメモリに格納されています。
メモリの1バイトごとにアドレスはつけられているので
int型の変数aは4つのアドレスをもつことになります。
int型の変数aのアドレスとは
int a=2;
が実行されて
アドレス番号003FFE5Cのメモリに 00000010
アドレス番号003FFE5Dのメモリに 00000000
アドレス番号003FFE5Eのメモリに 00000000
アドレス番号003FFE5Fのメモリに 00000000
(合計4バイト=32ビット)
のように
数値データ2がメモリに格納されているなら
先頭の
00000010を格納しているメモリのアドレス003FFE5Cになります。
つまり
00000010を格納しているメモリのアドレス003FFE5C
00000000を格納しているメモリのアドレス003FFE5D
00000000を格納しているメモリのアドレス003FFE5E
00000000を格納しているメモリのアドレス003FFE5F
の4つのアドレスを代表した
00000010を格納しているメモリのアドレス003FFE5Cが
変数aのアドレス003FFE5Cとなっているのです。
同様に
float型の変数aのアドレスなら
float型の変数aには実数値が格納されますが
そのとき 実数値が格納されるメモリの中の
先頭のメモリにつけられた番号が
float型の変数aのアドレスとなります
そして
char型の変数a
int型の変数a
float型の変数a
であっても
変数aのアドレスは&(アンパサンド)をつかって&aと表されます
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます