C/C++中如何获取数组和指针的长度

2019-05-31  本文已影响0人  BrokenRainK

获取数组长度

#include <iostream>
using namespace std;

int main()
{
    int arr[15];
    cout << "sizeof(arr) / sizeof(*arr):" << sizeof(arr) / sizeof(*arr) << endl;    //输出15
    cout << "sizeof(arr) / sizeof(arr[0]):" << sizeof(arr) / sizeof(arr[0]) << endl;//输出15

    return 0;
}
#include <iostream>
using namespace std;

template<class T, size_t N>
size_t getCount(T (&arr)[N])
{
    return N;
}

int main()
{
    int arr[15];
    cout << "getCount(arr):" << getCount(arr) << endl;//输出15

    return 0;
}
#include <iostream>
#include <type_traits>  // 需包含此头文件
using namespace std;

int main()
{
    int arr[15];
    cout << "extent<decltype(arr), 0>::value:" << extent<decltype(arr), 0>::value << endl;//输出15

    return 0;
}
include <iostream>
using namespace std;

template <typename T>
class ComputeSize;
 
template <typename T, size_t N>
class ComputeSize<T[N]>
{
public: 
    static const size_t value = N;
};
 
int main()
{ 
    int arr[15]; 
    cout << "ComputeSize<decltype( arr )>::value:" << ComputeSize<decltype( arr )>::value << endl; // 输出15

    return 0;
}
include <iostream>
#include <stdlib.h>
using namespace std;
 
int main()
{ 
    int arr[15]; 
    cout << "_countof(arr):" << _countof(arr) << endl; // 输出15

    return 0;
}

#include <iostream>
#include "boost/range.hpp"
using namespace std;
 
int main()
{   
    int arr[15];   
    cout << "boost::size(arr):" << boost::size(arr) << endl; // 输出15

    return 0;
}

获取指针长度

include <iostream>
using namespace std;
 
int main()
{ 
    int *arr = new int[15]; 
    cout << "_msize(arr):" << _msize(arr) / sizeof(*arr) << endl; // 输出15
    delete arr;

    return 0;
}
include <iostream>
using namespace std;
 
int main()
{ 
    int *arr = new int[15]; 
    cout << "malloc_usable_size(arr):" << malloc_usable_size(arr) / sizeof(*arr) << endl; // 输出15
    delete arr;

    return 0;
}

本文参考链接: https://blog.csdn.net/brucethl/article/details/79257360

上一篇下一篇

猜你喜欢

热点阅读