画像(logo)

HOME/[C言語 入門]小学生でもわかるC言語2 目次/七日目 ポインタ4

広告

[C言語 入門 小学生でもわかるC言語2]
七日目 ポインタ4

広告

↓発売日:2018年09月22日↓

たった1日で基本が身に付く! C言語 超入門

新品価格
¥2,225から
(2018/10/8 23:10時点)

目次へ戻る

ポインタ4

今回は文章とポインタの関係について見ていきましょう。

/*七日目 プログラム1*/
#include <stdio.h>

int main(){
	const char* bunsyou = "文章はポインタに任せて!";

	printf("%s\n",bunsyou);

	return 0;
}

■実行結果■

画像(ce_7_1)

文章はポインタに任せましょう!

前までは文章は配列に入れてましたね。

char bunsyou[30] = "文章はポインタに任せて!";

こんな感じで、文字数とかを考えながら。

しかもこの方法だと、余ってしまった配列の残り部分は全部ムダになります!もったいないですね。

そこでポインタを使いましょう!ポインタを宣言して文章を入れるだけです!

const char* bunsyou = "文章はポインタに任せて!";

使い方は一緒です!

printf("%s",bunsyou);

「%s」でそのままお尻に変数名「bunsyou」だけです!

文章の配列

さらにポインタを配列にする事によってたくさんの文章を扱えるようになります。

/*七日目 プログラム2*/
#include <stdio.h>

int main(){
	const char* bunsyou[3] = {
		"apple",
		"orange",
		"peach"
	};

	printf("%s\n",bunsyou[0]);
	printf("%s\n",bunsyou[1]);
	printf("%s\n",bunsyou[2]);

	return 0;
}

■実行結果■

画像(ce_7_2)

ポインタを配列にする事によってたくさんの文章を扱っております。

初期化のやり方に注目です。

const char* bunsyou[3] = {
	"apple",
	"orange",
	"peach"
};

初期化の時だけ「{}」大かっこで囲んであとは「"」ダブルクォーテーションで一気に初期化できます。

最後だけ「,」コンマがつかない所に注意です。

そして使う時は

printf("%s\n",bunsyou[0]);

配列の番号だけいれれば大丈夫です!

広告

ポインタ文章の変更について

/*七日目 プログラム3*/
#include <stdio.h>

int main(){
	const char* bunsyou = "hello world";

	printf("bunsyou + 2 = %c\n",*(bunsyou + 2));
	printf("bunsyou + 3 = %c\n",*(bunsyou + 3));
	printf("bunsyou + 4 = %c\n",*(bunsyou + 4));

	return 0;
}

■実行結果■

画像(ce_7_3)

こちらのプログラムで前回やったように一つ一つの要素を確認できるので、なんとなく

*(bunsyou + 2) = 'a';

文字の配列みたいにその中身も変更できそうですよね。

しかし!

「これはやってはいけません!」と決められているそうです。

場合によってはできなくもないそうですが、決められているのでやめておきましょう!

constの意味

ここでconstのきちんとした意味を説明したいと思います。

constは本来変更したくない変数があった時にその変数を保護する目的で変数を宣言する時にその先頭につけます。

const int suji = 100;

こんな感じです。

ですのでconstをつければその変数がなんだろうが変更できない変数になります。

昔のC言語はこのポインタを武器にやりたい放題できたのでやりようによってはポインタ文章だろうが何だろうがアドレスを直に指定してその値を変更する事ができたのですが、システム開発が複雑になるにつれて間違った使い方をして致命的エラーなどを発生させる可能性が出てきたのでscanfなども含め危ないものは間違った使い方ができない方向にしてきたというワケです!

それぞれ少し違います

少し復習しましょう。

ポインタ文章の変更はできないと言いました。

もし変更する可能性のある文字列が必要な場合は

char bunsyou[128] = "hello world";

と文字配列にしなければなりません。

このように同じ文字列でも配列の場合とポインタの場合の扱いが少し異なります。

他にも同じポインタでも文字列の場合と数字の場合の扱いも少し異なります。

const char* bunsyou = "hello world";

このように直接文章を入れられるからといって

int* p = 100;

または、

int* p;
*p = 100;

みたいに直接数字を入れられるものではありません。

ポインタは本来アドレスを保存するものです。

そしてその保存したアドレスが持っている内容を変更したりできるというものです。

このへんの微妙な違いを間違えないようにしましょう。

では基本的なポインタの使い方を学んだトコロで次回は実際に使われていそうな使い方を見ていきたいと思います。

次回

八日目 ポインタ5

□ページの先頭へ□

□目次へ戻る□

□HOME□

広告

↓発売日:2016年02月29日↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

新品価格
¥2,462から
(2018/10/8 23:25時点)

↓発売日:2018年06月22日↓

スッキリわかるC言語入門

新品価格
¥2,916から
(2018/10/8 23:15時点)

↓発売日:2018年03月09日↓

C言語本格入門 ~基礎知識からコンピュータの本質まで

新品価格
¥3,218から
(2018/10/8 23:16時点)

↓発売日:2017年06月14日↓

やさしいC 第5版 (「やさしい」シリーズ)

新品価格
¥2,700から
(2018/10/8 23:17時点)

↓発売日:2018年05月21日↓

作って身につく C言語入門

新品価格
¥2,462から
(2018/10/8 23:18時点)

↓発売日:2017年12月07日↓

新・標準プログラマーズライブラリ C言語 ポインタ完全制覇

新品価格
¥2,678から
(2018/10/8 23:19時点)

↓発売日:2017年02月08日↓

新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ)

新品価格
¥2,700から
(2018/10/8 23:20時点)

↓発売日:2017年09月26日↓

かんたん C言語 [改訂2版] (プログラミングの教科書)

新品価格
¥2,916から
(2018/10/8 23:22時点)