ポインタについて理解を深めるために演習問題をやるよ
演習1
変数のアドレスを表示して確認するやつ
前回、変数のアドレスを表示して、変数のアドレス、および、配列のアドレスの変化と型の関係を確認するプログラムを作ってみた。
このプログラムの配列の型を、
- short
- float
- double
- (char)は変換して表示すればいいけど、ちょっとめんどくさいからやめておこう。。。割と大事なんだけどね。。。
に変更して、アドレスの変化がどうなるか確認しなさい。
演習2
昔やった文字配列を覚えているかな?
char str[] = "abc";
これは、“abc”という文字を1文字ずつstrと言う文字型の配列(char型の配列)に並べて初期化するという意味でした。
““(ダブルクォート)で初期化すると、文字配列の終わりには、自動的に終端文字(ナル文字)'\0'が追加される仕組みでした。
このナル文字を最後に於いておくことで、文字列がどこまで続いているかを判別できます(番兵法だね!)。
問題1
char str[] = "youetsu@jc-21.jp"; int lenghth = 0;//文字列の長さ
変数lengthに文字列の長さを代入しなさい。(プログラム中で数えるんだよ)
問題2
同様に、文字列の長さをポインタを使って調べなさい。
char str[] = "youetsu@jc-21.jp"; int lenghth = 0;//文字列の長さ char *p = nullptr;
問題3
ポインタを使って、文字列を走査し、@以降をどうにかして削除しなさい。
char str1[] = "youetsu@jc-21.jp"; int lenghth = 0;//文字列の長さ char *p = nullptr;
問題4
bool isIncluded(char str1[], char str2[]);
与えられた文字列str1の中にstr2が含まれていたら、true含まれていなかったらfalse を返す関数を作りなさい。
例1) str1: “yamadatarou” str2: “mad” 結果:true
例2) str1: “yamadatarou” str2: “max” 結果:false