在学习C++的过程中,做职工管理系统的时候,发现使用sizeof(s_a) / sizeof(s_a[0])求出的数组长度不对,后来才发现这个是用来求静态数组的长度的,而在堆区创建的数组是动态数组,不适用于这个方法
于是通过搜索发现能够这样实现求动态数组的长度,_msize(d_a) / sizeof(d_a[0]);例如
#include <iostream>
using namespace std;
int main()
{
int s_Arr[5] = { 1,2,3,4,5 }; //静态数组
int len = 5; //动态数组的长度
int* d_Arr = new int[len]; //动态数组-开辟在堆区
int s_Arr_len = 0;
int d_Arr_len1 = 0;
int d_Arr_len2 = 0;
s_Arr_len = sizeof(s_Arr) / sizeof(s_Arr[0]);
d_Arr_len1 = sizeof(d_Arr) / sizeof(d_Arr[0]);
d_Arr_len2 = _msize(d_Arr) / sizeof(d_Arr[0]);
cout << "静态数组s_Arr的长度是:" << s_Arr_len << endl;
cout << "动态数组d_Arr的长度是:" << d_Arr_len1 << endl;
cout << "动态数组d_Arr的长度是:" << d_Arr_len2 << endl;
}