C言語なら俺に聞け(入門篇) Part 41
■ このスレッドは過去ログ倉庫に格納されています
0032デフォルトの名無しさん
2008/12/21(日) 02:18:29↓のコードだと 配列宣言の直下ではsizeof の結果256ですが、
関数の中ではポインタの大きさの4になります。
文字列を受け取る関数のほとんどは、配列宣言直後の変数でも
引数で受け取ったポインタでも同じように扱えるし、見た目の書き方
も同じですよね。
コードではどっちも同じ書き方の「sz」でアクセスできるのが不思議です。
void func(char* sz)
{
printf("%d",sizeof(sz)); ← 4になる(違う)
printf(sz); ← qwertyと表示される(同じ)
}
int main(int argc,char* argv[])
{
char sz[256];
strcpy(sz,"qwerty");
printf("%d",sizeof(sz)); ← 256になる(違う)
printf(sz); ← qwertyと表示される(同じ)
func(sz);
}
■ このスレッドは過去ログ倉庫に格納されています