【发布时间】:2019-07-12 06:24:35
【问题描述】:
我拿了两个数组,然后将这两个数组合并到一个新创建的第三个数组中,它可以工作,但是当我输出数组的大小时,我得到的大小为“1”。我不明白为什么该数组的大小是“1”,即使其中有 5 个元素。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int arr1[] = { 1,2,3 };
int arr2[] = { 9,4 };
int size1 = sizeof(arr1) / sizeof(int);
int size2 = sizeof(arr2) / sizeof(int);
int *arr = new int[size1 + size2];
//merging the two arrays by transferinng the elements into the third array
for (int i = 0; i < size1; i++)
{
arr[i] = arr1[i];
}
for (int i = size1; i < (size1 + size2); i++)
{
arr[i] = arr2[i - size1];
}
//sorting the array
sort(arr, arr + (size1 + size2));
cout << endl;
//finding the size of newly merged array
int mergeSize = sizeof(arr) / sizeof(int);
cout << "The size of the array is " << mergeSize << endl; //why am I getting the size of the array as '1'
return 0;
}
【问题讨论】:
-
arr是一个int指针,所以sizeof(arr)得到int指针的大小。如果你想知道分配内存的大小,那就是size1 + size2乘以int的大小。
标签: c++ arrays data-structures