サンプルコード:
#include <stdlib.h>
#include <stdio.h>
int main()
{
int arr[5] = {10,20,30,40,50};
int *p;
p = arr;
printf("Total size calculating from array = %ld\n", sizeof(arr));
printf("Total size calculating from pointer = %ld \n",sizeof(p));
return 0;
}
出力:
Total size calculating from array = 20
Total size calculating from pointer = 8
これまでの私の理解では、配列のアドレスを同じデータ型のポインターに割り当てて、問題なくすべての操作を実行できるということでした。しかし、sizeof
異なる値を返しています。
だから私はここでいくつか質問があります:
- 良い練習を割り当てることはありますか?
- 割り当てを行うと、何が変更されますか?
- なぜ8?