示例代码:
#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?