【发布时间】:2021-01-21 23:45:56
【问题描述】:
请看以下代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int arr[10];
int *arr2;
arr2=malloc(10*sizeof(int));
printf("The size of arr is %lu \n", sizeof(arr));
printf("The sice of arr2 is %lu \n", sizeof(arr2));
return 0;
}
输出是:
The size of arr is 40
The sice of arr2 is 8
我知道arr 包含数组中第一个元素的地址。
我的问题是:为什么sizeof() 运算符为arr 返回 40,而为 arr2 返回 8?sizeof(arr) 怎么是 40,因为它只是存储数组的第一个元素的地址?
【问题讨论】:
-
sizeof (a_pointer)有多大? -
因为
sizeof(int[10])和sizeof(int*)不同。 -
@DavidC.Rankin
sizeof(pointer)是 8 -
什么是
sizeof (arr2)? ——长得一模一样? (他们是,这就是为什么......) -
arr2是一个指针,而不是一个动态数组。arr不“包含数组中第一个元素的地址”,也没有“存储数组第一个元素的地址”。arr是一个数组。