C/C++获取数组的长度
C、C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在 使用时都把它定义成一个宏,比如#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 。而在C++中则可以使用模板 技术定义一个函数,比如:
template <class T>
int getArrayLen(T& array)
{
return (sizeof(array) / sizeof(array[0]));
}
这样对于不同类型的数 组都可以使用这个宏或者这个函数来获取数组的长度了。以下是两个Demo程序,一个C语言的,一个C++的:
P.S:若数组为存储字符串的字符数组(char str2[]={"1234"};),则所求得的长度还需要减一,即对于宏定义: #define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]) - 1 );} ,对于函数定义:
template <class T>
int getArrayLen(T& array)
{
return (sizeof(array) / sizeof(array[0]) - 1);
}
原因为存储字符串的字 符数组末尾有一个'/0'字符,需要去掉它。
【C语言】
#include <stdio.h>
#include <stdlib.h>
#define GET_ARRAY_LEN(array,len){len = (sizeof(array) / sizeof(array[0]));}
//定义一个带参数的 宏,将数组长度存储在变量len中
int main()
{
char a[] = {'1','2','3','4'};
int len;
GET_ARRAY_LEN(a,len)
//调用预定义的宏,取得数组a的长度,并将其存储在变量len中
printf("%d/n",len);
system("pause");
return 0;
}
【C++】
#include <iostream>
using namespace std;
template <class T>
int getArrayLen(T& array)
{//使用模板定义一 个函数getArrayLen,该函数将返回数组array的长度
return (sizeof(array) / sizeof(array[0]));
}
int main()
{
char a[] = {'1','2','3'};
cout << getArrayLen(a) << endl;
return 0;
#include<iostream>
#include<cstring>
using namespace std; template <class T>
int getArrayLen(T& array)
{
return (sizeof(array) / sizeof(array[]));
} int main()
{
char str[]={'','','',''};//逐个字符赋给数组中元素
char str2[]={""};//字符串赋给数组
int str1[]={,,,};//整型数组
string str3[]={"",""};//字符串数组
string str4="";//字符串
cout<<getArrayLen(str)<<endl;
cout<<getArrayLen(str1)<<endl;
cout<<getArrayLen(str2)<<endl;//这个结果不对 基础上-1
cout<<getArrayLen(str3)<<" "<<str4.length()<<endl;
return ;
}
C/C++获取数组的长度的更多相关文章
- C/C++中如何获取数组的长度?
C.C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / ...
- 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++中如何获取数组的长度? 收藏 C.C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方 ...
- 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 ...
- C++:获取数组长度
C/C++中如何获取数组的长度? 如何获取数组的长度 2010-12-15 20:49 C/C++中如何获取数组的长度? 收藏 C.C++中没有提供 直接获取数组长度的函数,对于存放字符串 ...
- php获取数组长度的方法(有实例)
php获取数组长度的方法,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度,还有获取二维数组的方法. 在php中获取数组长度方法很简单,php为我们提供 ...
- c/c++ 获取数组长度
在C/C++中并没有提供直接获取数组长度的函数 c/c++ 获取数组长度其中一种方法是使用sizeof(array) / sizeof(array[0]). 在C语言中习惯上在使用时都把它定义成一个宏 ...
随机推荐
- spring 定时任务标注
使用spring框架,需要定时任务只需要在方法上加@Component 就可以了 package hello; import java.text.SimpleDateFormat; import ja ...
- stack note
参考 http://www.cnblogs.com/java06/archive/2012/10/16/3122428.html 1,顺序栈 定义栈: #define stacksize 1000; ...
- 《30天自制操作系统》05_day_学习笔记
//bootpack.c 完整代码 #include <stdio.h> void io_hlt(void); void io_cli(void); void io_out8(int po ...
- ImportError: No module named setuptools
Python第三方模块中一般会自带setup.py文件,在Windows环境下,我们只需要使用命令 cd c:\Temp\foo python setup.py install 两个命令就可以完成第三 ...
- iOS架构网址
http://casatwy.com/iosying-yong-jia-gou-tan-kai-pian.html
- escape()、encodeURI()、encodeURIComponent() difference
escape() 方法: 采用ISO Latin字符集对指定的字符串进行编码.所有的空格符.标点符号.特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编 ...
- JS不兼容减号,css属性转驼峰写法
<script> function changeFormat(str) { return str.replace(/-(\w)/g, function(k, r) { return r.t ...
- Linux: .vimrc
set nuset autoindentset cindent"set tabstop=2"set shiftwidth=2set cursorlineset hlsearch&q ...
- windows系统调用 进程快照
#include "windows.h" #include "tlhelp32.h" #include "iostream" using n ...
- angular 自定义指令 link or controller
Before compilation? – Controller After compilation? – Link var app = angular.module('plunker', []); ...