ポインタについて理解を深めるために演習問題をやるよ
演習2
昔やった文字配列を覚えているかな?
char str[] = "abc";
これは、“abc”という文字を1文字ずつstrと言う文字型の配列(char型の配列)に並べて初期化するという意味でした。
““(ダブルクォート)で初期化すると、文字配列の終わりには、自動的に終端文字(ナル文字)'\0'が追加される仕組みでした。
このナル文字を最後に於いておくことで、文字列がどこまで続いているかを判別できます(番兵法だね!)。
問題1
char str[] = "youetsu@jc-21.jp"; int length = 0;//文字列の長さ
変数lengthに文字列の長さを代入しなさい。(プログラム中で数えるんだよ)
解答
ダブルクォートで囲んで文字列を初期化すると(例:”文字列”)自動的に最後にナル文字('\0')が挿入される。
ちなみに、““で初期化するときは、自動でメモリの大きさが確定するので(文字列の長さからコンパイラが計算できるから)配列の要素数は省略できる。
問題を解くためには、ナル文字までの文字数を普通に一個ずつカウントすればよい。
カウンタ変数をint型などで用意して普通に数えるよ!
int main() { //初めにchar [] でやってみて //次にstring でやってみます char str[] = "youetsu@jc-21.jp"; int length = 0;//文字列の長さ int i = 0; while(str[i] != '\0') { length++; i++; } //C++使いはstringでやるとかっこいい std::cout << length << std::endl; std::string sstr(str); std::cout << sstr.length() << std::endl; }