【发布时间】:2022-12-13 12:08:57
【问题描述】:
我试图查看动态创建的数组是否具有与普通数组相同的行为,但看起来它们确实有点不同。 这是我用来测试他们行为的代码:
int main(){
int *int_array{new int[10]};
cout<<sizeof(*int_array);
return 0;
}
显示到控制台的输出是:4
但是对于一个普通的整数数组,在使用大小函数,我得到数组占用的总大小(以字节为单位)。如下代码所示:
int main(){
int int_array[5];
cout<<sizeof(int_array);
return 0;
}
显示到控制台的输出是:20
所以看起来当我取消引用指向动态分配数组的指针时,至少对于“sizeof”函数,我只能“看到”数组的第一个元素,而不是一眼就能看到整个数组。
这个对吗?你能解释一下这里发生了什么吗??
我希望看到所有类型数组的统一、一致的行为,无论它们是如何创建和存储在内存中的。 我试过谷歌搜索以查看 Dyn 之间的差异。分配数组和普通数组,但它们没有产生任何解释。
【问题讨论】:
-
在
int *int_array{new int[10]};int_array 不是一个数组,它是一个指向 int 的指针。它用于指向未命名的动态分配数组的第一个元素,当结合该数组中元素数量的知识时,它允许访问和使用该未命名数组。
标签: c++ arrays dynamic-memory-allocation sizeof