文字列を関数に受け渡し、その配列サイズを sizeof() 関数にて計ると
関数に受け渡す前と後で、以下のように値が変化します。
c
1#include <stdio.h> 2 3// サイズ測定 4void str_size(char *string) 5{ 6 printf("string = %s\n", string); 7 printf("size after = %d\n", (int)sizeof(string)); 8} 9 10int main(void) 11{ 12 char string[] = "Hello world\n"; 13 14 printf("size before = %d\n\n", (int)sizeof(string)); 15 16 str_size(string); 17 18 return (0); 19}
出力結果
size before = 13
string = Hello world
size after = 8
%sで表示してみると、ちゃんと
"Hello world"
と終端文字分まで出力されるのですが
なぜsizeof関数の値が代わり、8という結果になってしまうのでしょうか?
基本的な質問かもしれませんが、ご回答よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/16 04:04