- 【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
798 :デフォルトの名無しさん[sage]:2015/02/01(日) 12:36:47.48 ID:fuhak8XW - char a[1];
a[0]='A'; a[1]='\0'; ってやると、 A \0 \0 って3文字分メモリを取って、隣接する配列とかがおかしくなるんですが何でですか。
|
- 【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
804 :デフォルトの名無しさん[sage]:2015/02/01(日) 13:13:21.84 ID:fuhak8XW - char a[1] ;
strcpy(a,"A"); a[0] a[1] ってすると、A \0 って領域が取られると思ってたので、 a[1] に '\0' を直接入れても変わらないと思ってたのですが違うんですかね。
|
- 【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
807 :デフォルトの名無しさん[sage]:2015/02/01(日) 13:34:48.58 ID:fuhak8XW - char a[2] ; strcpy(a,"A");
だったら A \0 ってなるが、 char a[1] ; strcpy(a,"A"); だと A しか格納されないって事ですかね。この場合終端文字が無いって事ですかね。
|
- 【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
811 :デフォルトの名無しさん[sage]:2015/02/01(日) 14:34:13.41 ID:fuhak8XW - char a[1] ;
strcpy(a,"A");で a[0] にA その次に \0 が入る。 a[1] = '\0' でも同じ事。 文字列としてaを扱った場合 aの隣の領域に変更が無ければ A\0の文字列として扱える。 ただし a[0] の隣に \0 を入れた時点で、 その領域を使ってた変数などが先頭が\0になって壊れると言う事ですね。
|