C/C++中获取数组的长度
C/C++中没有提供直接获取数组长度的函数。对于存放字符串的字符数组,可用strlen函数获取长度。
如:char a[]="hello world";int count = strlen(a);
对于其他类型的数组,可使用sizeof(array)/sizeof(array[0]),计算长度。
在C中,可在使用时把它定义成宏,
#define GET_ARRAY_LENGTH(array,len){len=(sizeof(array)/sizeof(array[0]));}
在C++中,可使用模板技术,定义这个函数,需要将数组参数作为引用类型传递,否则数组名称会退化为一个指针,这样就无法计算数组的大小sizeof(a)。
template<class T>
int GetArrayLen(T& a)
{
return sizeof(a)/sizeof(a[]);
}
对于存放字符串的字符数组,也可以使用这种方法来计算长度,但是计算后的值需要减去1,
即sizeof(a)/sizeof(a[0])-1,因为字符串默认带有结束符号'\0'
使用示例如下:
C语言:
#include<stdio.h>
#define GET_ARRAY_LENGTH(array,len){len=(sizeof(array)/sizeof(array[0]));}
int main()
{
char a[]={'','',''};
int num;
GET_ARRAY_LENGTH(a,num);
printf("%d\n",num);
return ;
}
C++语言:
#include<iostream>
template<class T>
int GetArrayLen(T& a)
{
return sizeof(a)/sizeof(a[]);
}
int main()
{
char a[]={'','',''};
int num = GetArrayLen(a);
std::cout<<num<<std::endl;
return ;
}
C/C++中获取数组的长度的更多相关文章
- C/C++中如何获取数组的长度?
C.C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / ...
- C/C++中如何获取数组的长度(宏&模板)
C.C++中没有提供 直接获取数组长度的函数.对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用 sizeof(array) ...
- C/C++中如何获取数组的长度?
C/C++中如何获取数组的长度? 收藏 C.C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方 ...
- C/C++获取数组的长度
C.C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / ...
- C++获取数组的长度
C++获取数组的长度 #include<iostream> using namespace std; template<class T> int length(T& a ...
- PHP中获取数组中单列的值
PHP中获取数组中单列的值如下: 利用PHP中的数组函数 array_column():返回数组中某个单列的值.(PHP 5.5+适用) 语法: array_column(array,column_k ...
- C#中获取数组中相加和最接近或等于(<=)给定值的算法
, ,,,,,,,,, }; List<List<int>> mylist = new List<List<int>>(); int length = ...
- shell 脚本获取数组字符串长度
#!/bin/sh source /etc/init.d/functions funOne() { array=(I am dfh kjlhfjksdf sdfj jdkfhaskl mjjoldfu ...
- c#中获取数组的行列个数的方法
GetUpperBound可以获取数组的最高下标.GetLowerBound可以获取数组的最低下标.这样就可以实现对数组的遍历//定义二维数组string[,] myStrArr2=new strin ...
随机推荐
- 动态设置js的属性
目标:js的属性名能够使用变量 举例:js对象object,当赋给该对象属性的时候能够採用下面方式 var object; object.prop1 = "value1"; obj ...
- 简单的Stack
自己实现的简单的Stack.没有查空满.用于算法考试 #include<iostream> using namespace std; const int MAX = 100; struct ...
- linux 使用wc命令统计文件行数、字数及大小
语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所有指定文件的总统计数.字是由空格字符区分开的最大字符串. 该命令各选 ...
- log4j 日志 配置 学习
1.用的flume-log4j avrosource的整合 2.学习如何指定类打印日志 #log4j.rootLogger=INFO,flume 这个是将全部的日志会打印出来 log4j.logge ...
- 设置Linux-Centos6.5字符集
登录腾讯云的服务,发现不支持中文字符.草蛋疼.... 01.查看Linux当前语言 echo $LANG C #C代表英文环境 ASCII 编码格式,通杀很多问题(乱码) 02.查看系统支持的 ...
- 如何架设部署V2EX社区/论坛(Google App Engine版)
1.What's V2EX? 关于这个问题,我们可以看看其作者Livid早期自己的V2EX社区的介绍: What's V2EX? 这是很多人都问过的问题,而我一直都没有做出一个明确的解答.因为我实在觉 ...
- PHP中的密码加密的解决方案
层出不穷的类似事件对用户会造成巨大的影响,因为人们往往习惯在不同网站使用相同的密码,一家“暴库”,全部遭殃 一般的解决方案 1.将明文密码做单向hash $password = md5($_POST[ ...
- xargs详解
一.场景 这个命令是错误的 find ./ -perm +700 |ls -l 这样才是正确的 find ./ -perm +700 |xargs ls -l 二.用法 [root@localhos ...
- 架构-LAMP特级学习(网站加速解决方案)
1.Squid代理缓存技术 2.页面静态化缓存技术 3.Memcache.Redis等缓存服务器 4.Sphinx搜索加速
- HDUOJ--------(1198)Farm Irrigation
Farm Irrigation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...