`
linest
  • 浏览: 150772 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

数组的sizeof

 
阅读更多
用sizeof时,作为参数传递的数组退化成指针,结果是4.
非参数时结果是100.

int getSize(char a[100])
{
	return sizeof(a);
}

int main(void)
{
	char ch[100];
	cout<<sizeof(ch)<<endl;
	cout<<getSize(ch)<<endl;
}



用数组的引用可以解决退化问题,但维数必须指定,这样一来维数定死,也不太好用
int getSize(char (&a)[100])
{
	return sizeof(a);
}

int main(void)
{
	char ch[100];
	cout<<sizeof(ch)<<endl;
	cout<<getSize(ch)<<endl;
}


用模板可以放宽维数问题,这样可以传
template   <typename   T> 
int getSize(T &a)
{
	return sizeof(a);
}

int main(void)
{
	char ch[100];
	cout<<sizeof(ch)<<endl;
	cout<<getSize(ch)<<endl;
}


但是很多情况下想要的效果是
传入维度并不相同的两个数组,模板方法这样是不行的
本质用了数组引用,维度100和200被认为是不同类型
除非定义两个模板类型
template   <typename   T> 
int getSize(T &a,T &b)
{
	//error
	return 0;
}

int main(void)
{
	char ch1[100];
	char ch2[200];
	cout<<getSize(ch1,ch2)<<endl;
}

分享到:
评论

相关推荐

    个人整理sizeof()用法汇总

    而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。 2.指针与静态数组的sizeof操作 指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。 注意:int *p; sizeof(p)=4...

    从一维数组看sizeof和strlen

    本文介绍了了数组的长度问题,在使用sizeof()和strlen()时的不同之处。

    MFC源代码 SIZEOF.02

    MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 ...

    php检测数组长度函数sizeof与count用法

    本文实例讲述了php检测数组长度函数sizeof与count用法。分享给大家供大家参考。具体如下: 在php检测数组长度的函数有sizeof count 下面看个简单实例: 复制代码 代码如下:$colorlist = array(“apple”=&gt;”red”, ...

    sizeof用法

    详细解释了sizeof用法,包括函数入口参数,数组与sizeof之间的用法。包括sizeof的概念、sizeof的使用方法、sizeof与其他操作符的关系、sizeof与指针之间的关系等

    指针数组和数组指针的区别.doc

     //------------------------------------------------------------------------- } void print_char(char* array[],int len)//当调用的时候传递进来的不是数组,而是字符指针他每加1也就是加上sizeof(char*)的...

    sizeof用法总结

    sizeof的概念 sizeof的使用方法 sizeof的主要用途 指针变量的sizeof 数组的sizeof

    sizeof详细总结

    1、定义与语法 2、语法形式 3、基本数据类型的sizeof值 4、指针变量的sizeof值 5、数组的sizeof值 6、结构体的sizeof值(★★★★★) 7、含位域结构体的sizeof

    内存的堆分配和栈分配&字符数组,字符指针,Sizeof总结[参考].pdf

    内存的堆分配和栈分配&字符数组,字符指针,Sizeof总结[参考].pdf

    C++中关于[]静态数组和new分配的动态数组的区别分析

    因此可以用sizeof(数组名)/sizeof(*数组名)来获取数组的长度。 int a[5]; 则sizeof(a)=20,sizeof(*a)=4.因为整个数组共占20字节,首个元素(int型)占4字节。 int *a=new int[4];则sizeof(a)=sizeof(*a)=4,因为地址...

    C语言查找数组里数字重复次数的方法

    本文实例讲述了C语言查找数组里数字重复次数的方法。分享给大家供大家参考。具体如下: #include stdafx.h #include #include using namespace std; int main() { int myarray[10]={4,3,7,4,8,7,9,4,3,6}; ...

    char数组的错误认识

    其是数组没有为空的,只要你申请了空间(数组一定以就在栈上有自己的空间),空间里就... memset(a[i].word,0,sizeof(a[i].word)); if(a[i].word[0]==0)//这里难到不是0 ??? 那是什么???'\0'和NULL 都不对 cout空了"; }

    第6章数组指针与字符串.

    nArrayLength = sizeof(oneArray) / sizeof(oneArray[0]); 6-5 用一条语句声明一个有5×3个元素的二维整型数组,并依次赋予1~15的初值。 解: int a[5][3] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }; 或:int a...

    9.第九章 数组.txt

    数组总字节数=sizeof(类型说明符)*数组长度=sizeof(数组名)。 9.2.2 一维数组引用 数组元素的的标识方法为数组名后跟下标。引用数组元素的一般形式为:数组名[下标]。下标只能为整型常量、整型变量、整型表达式。 ...

    sizeof 和strlen 区别.pdf

    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,...

    插入排序算法(动态数组实现)

    插入排序算法(动态数组实现) ... int * array = (int*)malloc(length * sizeof(int)); init(array,length); print_array(array,length); insert_sort(array,length); free(array);//释放动态数组空间

    php分割数据,数组,分割字符串

    php分割数据,数组,分割字符串循环输出 $array_x="1,15,8,100"; $new_arr = explode(",",$array_x);...$length = sizeof($new_arr); for($i=0;$i&lt;$length;$i++){ if($i!=0){echo " ";} echo $new_arr[$i]; }?&gt;

    C语言函数sizeof

    不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。   如sizeof(max)若此时变量max定义为int max(),sizeof(char_v) 若此时char_v定义为char char_v...

    C/C++中获取数组长度的方法示例

    学过C/C++的人都知道,在C/C++中并没有提供直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取其长度,那么对于其他类型的数组如何获取他们的长度呢? 其中一种方法是使用sizeof(array) / ...

Global site tag (gtag.js) - Google Analytics