Sizeof 演算子はコンパイル時の演算子です。コンパイル時に sizeof 式を定数の結果値に変換します。[例外可変個引数テンプレート c99]
通常、コンパイラはコンパイル時に変数のサイズを修正します。配列 n の場合。しかし、sizeof配列を印刷すると、正しいサイズになりますか? このコードはコンパイル時に n のメモリを割り当てますか?
sizeof はどのように評価されますか?
関数内の配列 a[] はどうですか?
int fun(int n)
{
char a[n+3];
return sizeof(a);
}
int
main( )
{
int i;
while(i!=-1){
scanf("%d",&i);
int n[i];
printf("\nsize: %d %d\n",fun(3),sizeof n);
}
}
これを試してみると、 sizeof は n のサイズを正しく [(sizeof (int)) * i] に出力しますが、関数は常に間違った結果を返します 6?
sizeof はどのように実装され、サイズを計算しますか (float、int、...データ型、変数、配列など) ?
どんなコードでも大歓迎です!