大家好,我不知道为什么这总是给我2个大小。我是新手使用动态数组。 这是我的代码:
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int x;
int *arr = NULL;
cout << "Enter size of array: ";
cin >> x;
arr = new int[x];
int n = sizeof(arr)/sizeof(arr[0]);
cout << n << endl;
}
答案 0 :(得分:2)
arr
是指向int
的指针。 sizeof(arr)
将始终返回指针的大小(它不依赖于指向的数据),在您的体系结构上,它显然是sizeof(int)
的两倍。
int * arr = nullptr;
size_t ptr_before_alloc = sizeof(arr);
arr = new int[1024];
size_t ptr_after_alloc = sizeof(arr);
assert(ptr_before_alloc == ptr_after_alloc); // this is guaranteed
如果你想在某处传递用new[]
分配的数据,你需要单独传递大小,或者更好的是,使用像std::vector
这样的容器来为你做这件事。