2012-04-08 10 views
-2

C++の文字列に関する質問があります。ヌルバイトがさらに1つのインデックスになるとどうなりますか? のようになります。C++の文字列とnullバイト

char name [10] = "Jack"; 

0 1 2 3 
J | a | c | k | 

name [5] = '\0'; 

これは私の宿題の状態です。余分なヌルクラッジ。

+0

試してみてください.... – littleadv

+1

'name'で何をするかによって異なります。 –

+3

ヒント:文字列リテラル '' Jack ''にはすでにヌルターミネーターが入っています。 –

答えて

5

「何が起こるのですか」とはどういう意味ですか?

あなたが書いたことによると、最初に5つのポジションをJack\0にして、10番目のポジションのアレーを作成し、次に6番目のポジションに\0を割り当てます。文字列は通常、\0で終わるので、文字列で機能するすべての関数はまったく同じ方法で扱います。

+0

私は文字列の長さが4に留まることを意味しますか?インデックス5にnullを追加してから5に変更されます。 – user1318393

+2

@ user1318393:「文字列の長さ」の意味によって異なります。文字列の長さがヌルターミネータの前にヌル以外の文字の数( 'strlen()'がどのように動作するか)として定義されている場合、長さは変わりません。一部の文字列表現では、文字列自体にヌル文字が表示されることがあります。その場合、長さを4から5に増やすことになります。どのように表現されているかについて話すことなく、「この文字列はどれくらいですか」と尋ねるのは無意味です。行内の2つのヌル・チャプターが実際に重要な意味を持ついくつかの文字列表現があります。 –

+1

@ user1318393例では、文字列が配列と一致しません。 '' Jack ''を指定すると、既に '\ 0'が5番目の位置に置かれています。あなたはあなたの文字列の最後を過ぎてすべての要素を変更することができ、これはあなたの "文字列"に影響しません。 5番目の位置を変更しない限り( '\ 0'を削除すると)、文字列の長さは4になります(少なくとも、"文字列の長さ "という共通の意味で)。 – Saphrosit

関連する問題