重複の可能性:
CでのSizeofの動作
次のCコードがなぜそのように動作するのか誰かが説明できますか?
#include <stdio.h>
int sizeof_func(int data[]) {
return sizeof(data);
}
int main(int argc, char *argv[]) {
int test_array[] = { 1, 2, 3, 4 };
int array_size = sizeof(test_array);
printf("size of test_array : %d.\n", array_size);
int func_array_size = sizeof_func(test_array);
printf("size of test_array from function : %d.\n",
func_array_size);
if (array_size == func_array_size) {
printf("sizes match.\n");
} else {
printf("sizes don't match.\n");
}
return 0;
}
出力は次のようになると予想しました。
size of test_array : 16.
size of test_array from function : 16.
sizes match.
しかし、代わりに私は得ました:
size of test_array : 16.
size of test_array from function : 4.
sizes don't match.