回答編集履歴
4
タイポ修正
answer
CHANGED
|
@@ -62,6 +62,6 @@
|
|
|
62
62
|
1
|
|
63
63
|
T
|
|
64
64
|
```
|
|
65
|
-
[
|
|
65
|
+
[間接参照演算子](https://ja.wikipedia.org/wiki/%E9%96%93%E6%8E%A5%E5%8F%82%E7%85%A7)```*```を使って、```char```型へのポインタ```str```が指してるブツの中身を見てみれば、サイズは丁度一文字分しかなく、その文字はTとなっている。
|
|
66
66
|
|
|
67
67
|
そんなトコかね。
|
3
\nを\0へ修正
answer
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
だから「4」が出てくる、ってのは珍しいシステム上でコンパイルした、って事かな。
|
|
29
29
|
多分。
|
|
30
30
|
|
|
31
|
-
で、提示コードは```char```型へのポインタのサイズを聞いてるわけで、貴方が「代入したつもりになっている」、この場合は"Today\
|
|
31
|
+
で、提示コードは```char```型へのポインタのサイズを聞いてるわけで、貴方が「代入したつもりになっている」、この場合は"Today\0"と言う文字列のサイズを訊いてるわけじゃないのね。文字列のサイズは6文字で、たしかにあなたが言う「6」になるんだけど、一方、それは```char```型へのポインタのサイズと同値じゃないんだよ。
|
|
32
32
|
具体的にはこんな状態になっている。
|
|
33
33
|
|
|
34
34
|
```
|
2
終端文字を間違えて改行文字にしてた orz
answer
CHANGED
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
具体的にはこんな状態になっている。
|
|
33
33
|
|
|
34
34
|
```
|
|
35
|
-
{'T', 'o', 'd', 'a', 'y', '\
|
|
35
|
+
{'T', 'o', 'd', 'a', 'y', '\0'}
|
|
36
36
|
↑
|
|
37
37
|
str
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
```char```型を指すポインタ```str```はメモリ上に連続でこの順に配置された'T'、 'o'、 'd'、 'a'、 'y'、 '\
|
|
40
|
+
```char```型を指すポインタ```str```はメモリ上に連続でこの順に配置された'T'、 'o'、 'd'、 'a'、 'y'、 '\0'のうち、先頭の'T'**だけ**を指している。
|
|
41
41
|
だから、コードをこんなカンジで書き換えてみれば様子は分かるでしょ。
|
|
42
42
|
|
|
43
43
|
```C
|
1
文章修正
answer
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
いや、「4」ってのはあり得るんだけど、特殊な環境なのかな。例えば組み込み、とかさ。
|
|
27
27
|
C言語の仕様だと、```char```型は1byteって定義なんだけど、その1byteってのはシステム依存で、システムが1byte = 4bitって定義をしてないと、「4」って結果は出てこない。
|
|
28
|
-
だから「4」が出てくる、ってのは
|
|
28
|
+
だから「4」が出てくる、ってのは珍しいシステム上でコンパイルした、って事かな。
|
|
29
29
|
多分。
|
|
30
30
|
|
|
31
31
|
で、提示コードは```char```型へのポインタのサイズを聞いてるわけで、貴方が「代入したつもりになっている」、この場合は"Today\n"と言う文字列のサイズを訊いてるわけじゃないのね。文字列のサイズは6文字で、たしかにあなたが言う「6」になるんだけど、一方、それは```char```型へのポインタのサイズと同値じゃないんだよ。
|