問題CPP00403の解答例と解説 C++ Lv.2

文字列の先頭の文字の取得(char*)(15分)


<解答例 1>
前の問題をやっていれば、これはわかるよね。ポインタから実態の文字列を取得するのは、ポインタの変数(pStr)の前に * をつけてあげて売いんだ。
あと、3行目の NULLポインターのチェックをしないと、引数の pStr が NULL のときにランタイムエラーになってプログラムがクラッシュしてしまうよ。


<解答例 2>
解答例1のif 文は、こんな風に ? と : を使って1行で表すことができるよ。


<解答例 3>
そして、if 文の中では、NULL は false と同じ意味なので、こういう風にして、"pStr に値が入っていれば *pStr を、値が入っていなければ(つまりNULLなら) '\0'を返す"、というように書けるよ。


<解答例 4>
あと、終端文字'\0'は、NULL とも同じ意味なので、このようにも書けるよ。


<解答例 5>
この解答例は、ポインタで指し示している文字列を string にセットして、string の [] 演算子で、先頭の文字を取得しているよ。これでも正しく動くけど、わざわざ string のオブジェクトを使って返しているのは、少しとはいえ、string オブジェクトの構築(コンストラクタ)と破棄(デストラクタ)の分だけオーバヘッドだね。もし、これが入社試験問題だったら、"私はポインタがわかりません。"と言っているようなものだから、あんまり良いコードとは言えないんじゃないかな。






初めての方へ:このページは、このサイトで用意しているプログラミング問題の解答と解説のページです。このサイトではブラウザ上からプログラミングができます。会員登録(無料)して、プログラミングしてみませんか?
新規登録



ログイン
メールアドレス:

パスワード:



パスワード紛失

新規登録