広告
↓発売日:2018年09月22日↓
新品価格 |
今回は文章とポインタの関係について見ていきましょう。
/*七日目 プログラム1*/ #include <stdio.h> int main(){ const char* bunsyou = "文章はポインタに任せて!"; printf("%s\n",bunsyou); return 0; }
文章はポインタに任せましょう!
前までは文章は配列に入れてましたね。
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; }
ポインタを配列にする事によってたくさんの文章を扱っております。
初期化のやり方に注目です。
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; }
こちらのプログラムで前回やったように一つ一つの要素を確認できるので、なんとなく
*(bunsyou + 2) = 'a';
文字の配列みたいにその中身も変更できそうですよね。
しかし!
「これはやってはいけません!」と決められているそうです。
場合によってはできなくもないそうですが、決められているのでやめておきましょう!
ここで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;
みたいに直接数字を入れられるものではありません。
ポインタは本来アドレスを保存するものです。
そしてその保存したアドレスが持っている内容を変更したりできるというものです。
このへんの微妙な違いを間違えないようにしましょう。
では基本的なポインタの使い方を学んだトコロで次回は実際に使われていそうな使い方を見ていきたいと思います。
広告
↓発売日:2016年02月29日↓
12歳からはじめる ゼロからのC言語 ゲームプログラミング教室 新品価格 |
↓発売日:2018年06月22日↓
新品価格 |
↓発売日:2018年03月09日↓
新品価格 |
↓発売日:2017年06月14日↓
新品価格 |
↓発売日:2018年05月21日↓
新品価格 |
↓発売日:2017年12月07日↓
新品価格 |
↓発売日:2017年02月08日↓
新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ) 新品価格 |
↓発売日:2017年09月26日↓
新品価格 |