C/C++中如何获取数组的长度(宏&模板)
C、C++中没有提供 直接获取数组长度的函数。对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用 sizeof(array) / sizeof(array[0])
在C语言中习惯上在 使用时都把它定义成一个宏,比如
#define GET_ARRAY_LEN(array, len) { len = sizeof(array)/sizeof(array[0]);}
代码实例:
#include<cstdio>
#include<iostream>
using namespace std; #define GET_LEN(array, len) { len = sizeof(array)/sizeof(array[0]);} int main()
{
int list[] = {,,,,,,,,,};
int length;
GET_LEN(list, length);
printf("%d\n", length);
return ;
}
在C++中则可以使用模板 技术定义一个函数,比如:
template <class T>
int getArrayLen(T&array)
{
return sizeof(array) / sizeof(array[]);
}
代码实例:
#include<cstdio>
#include<iostream>
using namespace std; template <class T>
int getArrayLen(T&array)
{
return sizeof(array) / sizeof(array[]);
}
int main()
{
int list[] = {,,,,,,,,,};
int length = getArrayLen(list);
printf("%d\n", length);
return ;
}
这样对于不同类型的数 组都可以使用这个宏或者这个函数来获取数组的长度了。
参考链接:http://blog.csdn.net/bopzhou/article/details/6063163/
C/C++中如何获取数组的长度(宏&模板)的更多相关文章
- C/C++中如何获取数组的长度?
C/C++中如何获取数组的长度? 收藏 C.C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方 ...
- C/C++中如何获取数组的长度?
C.C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / ...
- php中如何获取数组长度
php获取数组的长度的方法 一.总结 一句话总结:count方法和sizeof方法 二.php获取数组的长度的方法 php获取数组长度的方法: 一). 获取一维数组的方法: 1.count.sizeo ...
- C/C++获取数组的长度
C.C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / ...
- C++获取数组的长度
C++获取数组的长度 #include<iostream> using namespace std; template<class T> int length(T& a ...
- C/C++中获取数组的长度
C/C++中没有提供直接获取数组长度的函数.对于存放字符串的字符数组,可用strlen函数获取长度. 如:char a[]="hello world";int count = st ...
- shell 脚本获取数组字符串长度
#!/bin/sh source /etc/init.d/functions funOne() { array=(I am dfh kjlhfjksdf sdfj jdkfhaskl mjjoldfu ...
- Java 中正确获取中文字符串长度
/** * 获取字符串的长度,如果有中文,则每个中文字符计为2位 * * @param value * 指定的字符串 * * @return 字符串的长度 */ public static int l ...
- js中如何获取对象的长度和名称
js如何获取对象长度和名称 一.总结 一句话总结:对象的长度不能用.length获取,用js原生的Object.keys可以获取到 var obj = {'name' : 'Tom' , 'sex' ...
随机推荐
- Cocos2d-x中文显示乱码
Cocos2d-x 引擎编码格式默认为utf8,而VS开发环境默认为gbk2312,所以把代码文件保存为utf8格式就能解决. VS->文件->高级保存选项->Unicode(UTF ...
- Confluence 6 用户宏示例 - Hello World
下面示例显示了如何创建一个用户宏,在这个用户宏中显示文本 'Hello World!' 和任何用户在宏内容中输入的内容. Macro name helloworld Visibility Visibl ...
- 判断ie浏览器7、8、9三个版本
判断ie浏览器7.8.9三个版本 上午的时候,本来是想做一个position:fixed在各个浏览器下兼容的方案的,但是发现ie7/8下面的position:fixed只支持一个屏幕,如果内容高度 ...
- WIN 7 使用shutdown命令设置电脑自动关机
使用组合键“WIN + R”,在弹出的对话窗“运行”中输入“cmd”,点击“确定”按钮或直接按回车键“Enter”. 设置电脑在一定时间后关机,比如60分钟,在弹出的对话框中,输入“shutdown ...
- 论文阅读笔记十七:RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation(CVPR2017)
论文源址:https://arxiv.org/abs/1611.06612 tensorflow代码:https://github.com/eragonruan/refinenet-image-seg ...
- 异常:Keyword not supported: 'data source'的解决办法
将连接字符串中的"换为“'”,一个单引号即可. 详细解释:https://blogs.msdn.microsoft.com/rickandy/2008/12/09/explicit-c ...
- json如果不在pom中添加依赖会抛出500异常
所以必须添加以下依赖: <!--jackson相关依赖--><!-- https://mvnrepository.com/artifact/com.fasterxml.jackson ...
- 2019-3-9,Servlet转跳链接详解
//以下代码,可以传递request和response对象及其属性和变量至指定页面 request.getRequestDispatcher("showAttribut.jsp") ...
- tensorflow实现RNN及Word2Vec
参考:<tensorflow实战> 首先介绍一下Word2Vec Word2Vec:从原始语料中学习字词空间向量的预测模型.主要分为CBOW(Continue Bags of Words) ...
- asp.net core WebApi 快速入门
参考:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-web-api?view=aspnetcore-2.1 官网的例子 直接 ...