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

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


幕布斯7119047
浏览 1948回答 3
3回答

九州编程

1.&nbsp;算术表达式:123456#include&nbsp;<iostream>&nbsp;int&nbsp;main()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;arr[4];&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;<<&nbsp;sizeof(&nbsp;arr&nbsp;)&nbsp;/&nbsp;sizeof(&nbsp;arr[0]&nbsp;)&nbsp;<<&nbsp;std::endl;&nbsp;//&nbsp;输出4}或者123456#include&nbsp;<iostream>&nbsp;int&nbsp;main()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;arr[4];&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;<<&nbsp;sizeof(&nbsp;arr&nbsp;)&nbsp;/&nbsp;sizeof(&nbsp;*arr&nbsp;)&nbsp;<<&nbsp;std::endl;&nbsp;&nbsp;//&nbsp;输出4}2.&nbsp;函数模板参数自动推断:1234567891011#include&nbsp;<iostream>&nbsp;template&nbsp;<typename&nbsp;T,&nbsp;size_t&nbsp;N>inline&nbsp;size_t&nbsp;Count(&nbsp;&nbsp;T&nbsp;(&nbsp;&&nbsp;arr&nbsp;)[N]&nbsp;)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;N;}&nbsp;int&nbsp;main()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;arr[4];&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;<<&nbsp;Count(&nbsp;arr&nbsp;)&nbsp;<<&nbsp;std::endl;&nbsp;&nbsp;//&nbsp;输出4}3.标准C++模板库:1234567#include&nbsp;<type_traits>&nbsp;&nbsp;//&nbsp;注意包含此头文件.#include&nbsp;<iostream>&nbsp;int&nbsp;main()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;arr[4];&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;<<&nbsp;std::extent<decltype(&nbsp;arr&nbsp;),&nbsp;0>::value&nbsp;<<&nbsp;std::endl;&nbsp;//&nbsp;输出4}4.模板特化与自动类型推断:1234567891011121314include&nbsp;<iostream>template&nbsp;<typename&nbsp;T>class&nbsp;ComputeSize;&nbsp;template&nbsp;<typename&nbsp;T,&nbsp;size_t&nbsp;N>class&nbsp;ComputeSize<T[N]>&nbsp;{public:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;const&nbsp;size_t&nbsp;value&nbsp;=&nbsp;N;};&nbsp;int&nbsp;main()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;arr[4];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;<<&nbsp;ComputeSize<decltype(&nbsp;arr&nbsp;)>::value&nbsp;<<&nbsp;std::endl;&nbsp;//&nbsp;输出4}5.&nbsp;Visual&nbsp;C++编译器预定义宏:1234567#include&nbsp;<cstdlib>#include&nbsp;<iostream>&nbsp;int&nbsp;main()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;arr[4];&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;<<&nbsp;_countof(&nbsp;arr&nbsp;)&nbsp;<<&nbsp;std::endl;&nbsp;&nbsp;//&nbsp;输出4.}6.&nbsp;boost库:1234567#include&nbsp;"boost/range.hpp"#include&nbsp;<iostream>&nbsp;int&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;arr[4];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;<<&nbsp;boost::size(&nbsp;arr&nbsp;)&nbsp;<<&nbsp;std::endl;&nbsp;//&nbsp;输出4}上面的方法适用于静态数组,动态的数组(new[])是无法获取元素个数的。上面的代码,自己可以编译运行看看,如果手上没有编译器测试上面的代码或者编译失败,可以在下面的页面上编译运行(最新版本的Visual&nbsp;C++):&nbsp;

泛舟湖上清波郎朗

方法:使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上,在使用时都把它定义成一个宏。比如#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 。而在C++中则可以使用模板技术定义一个函数。比如:template <class T>intgetArrayLen(T& array){return (sizeof(array) / sizeof(array[0]));}这样对于不同类型的数 组都可以使用这个宏或者这个函数来获取数组的长度了。基础语法1、C语言数据类型C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。2、常量与变量常量其值不可改变,符号常量名通常用大写。 变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。
打开App,查看更多内容
随时随地看视频慕课网APP