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模板语言不错的脚本
<html> <script src="template.js"></script> <head> </head> &l ...
- Canvas简述
HTML Canvas API有两方面优势可以弥补:首先,不需要将所绘制图像中的每个图元当做对象存储,因此执行性能非常好:其次,在其他编程语言现有的优秀二维绘图API的基础上实现Canvas API相 ...
- STS项目html文件中文乱码解决
解决方案: windows -- perferences -- encoding,设置成utf-8 步骤一:Content Types 步骤二:Workspace 步骤三:JSP Files
- 解决 Maven was cached in the local repository, resolution will not be reattempted until the update interv
问题原因 Maven默认会使用本地缓存的库来编译工程,对于上次下载失败的库,maven会在~/.m2/repository/<group>/<artifact>/<ver ...
- python之smtplib模块 发送邮件
# -*- coding: utf-8 -*- #python 27 #xiaodeng #smtplib模块 发送邮件 import smtplib from email.mime.text imp ...
- DIY手机万能红外遥控器
DIY手机万能红外遥控器 1.手机安装软件:遥控精灵 2.红外二极管两个(旧的遥控器里面可以拆) 3.耳机的插头一个 步骤:首选讲两个二极管的正负相接(即a二极管的正极连接b二极管的负极,a二极管的负 ...
- 在Eclipse中开发C/C++项目
摘要:通过本文你将获得如何在Eclipse平台上开发C/C++项目的总体认识.虽然Eclipse主要被用来开发Java项目,但它的框架使得它很容易实现对其他开发语言的支持.在这篇文章里,你将学会如何使 ...
- [Table] pm_result
', '20160501.17:30 - 20160501.17:45', '2.1', '3.1', '3.1', '3.11', '3.44', '12.30', null, null, null ...
- 导出CCS3.3数据及使用matlab处理的方法
CCS3.3是一款DSP的集成开发环境(IDE).在做DSP开发时,为验证算法.经常须要使用matlab进行算法验证,验证算法就须要数据.因此,一种交互的方法是: 使用DSP开发板连接CCS 用CCS ...
- Vijos1935不可思议的清晨题解
- 题目来源 https://vijos.org/p/1935 描写叙述 今天,是2015年2月14日,星期六,情人节. 这真是一个不可思议的日子.今天早上.我打开窗户,太阳居然从西側升了起来. 我与 ...