質問するログイン新規登録

回答編集履歴

4

タイポ修正

2026/02/02 02:33

投稿

cametan
cametan

スコア259

answer CHANGED
@@ -62,6 +62,6 @@
62
62
  1
63
63
  T
64
64
  ```
65
- [関節参照演算子](https://ja.wikipedia.org/wiki/%E9%96%93%E6%8E%A5%E5%8F%82%E7%85%A7)```*```を使って、```char```型へのポインタ```str```が指してるブツの中身を見てみれば、サイズは丁度一文字分しかなく、その文字はTとなっている。
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へ修正

2026/02/02 02:23

投稿

cametan
cametan

スコア259

answer CHANGED
@@ -28,7 +28,7 @@
28
28
  だから「4」が出てくる、ってのは珍しいシステム上でコンパイルした、って事かな。
29
29
  多分。
30
30
 
31
- で、提示コードは```char```型へのポインタのサイズを聞いてるわけで、貴方が「代入したつもりになっている」、この場合は"Today\n"と言う文字列のサイズを訊いてるわけじゃないのね。文字列のサイズは6文字で、たしかにあなたが言う「6」になるんだけど、一方、それは```char```型へのポインタのサイズと同値じゃないんだよ。
31
+ で、提示コードは```char```型へのポインタのサイズを聞いてるわけで、貴方が「代入したつもりになっている」、この場合は"Today\0"と言う文字列のサイズを訊いてるわけじゃないのね。文字列のサイズは6文字で、たしかにあなたが言う「6」になるんだけど、一方、それは```char```型へのポインタのサイズと同値じゃないんだよ。
32
32
  具体的にはこんな状態になっている。
33
33
 
34
34
  ```

2

終端文字を間違えて改行文字にしてた orz

2026/02/01 14:24

投稿

cametan
cametan

スコア259

answer CHANGED
@@ -32,12 +32,12 @@
32
32
  具体的にはこんな状態になっている。
33
33
 
34
34
  ```
35
- {'T', 'o', 'd', 'a', 'y', '\n'}
35
+ {'T', 'o', 'd', 'a', 'y', '\0'}
36
36
 
37
37
  str
38
38
  ```
39
39
 
40
- ```char```型を指すポインタ```str```はメモリ上に連続でこの順に配置された'T'、 'o'、 'd'、 'a'、 'y'、 '\n'のうち、先頭の'T'**だけ**を指している。
40
+ ```char```型を指すポインタ```str```はメモリ上に連続でこの順に配置された'T'、 'o'、 'd'、 'a'、 'y'、 '\0'のうち、先頭の'T'**だけ**を指している。
41
41
  だから、コードをこんなカンジで書き換えてみれば様子は分かるでしょ。
42
42
 
43
43
  ```C

1

文章修正

2026/02/01 12:36

投稿

cametan
cametan

スコア259

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```型へのポインタのサイズと同値じゃないんだよ。