`
linest
  • 浏览: 155561 次
  • 性别: 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`可以直接计算出整个数组的大小,例如`sizeof(int[10])`返回40(假设`int`占4字节)。 - 需要注意的是,当数组作为函数参数传递时,它会退化为指针,因此`sizeof`只会返回指针的大小,而...

    从一维数组看sizeof和strlen

    "从一维数组看sizeof和strlen" 一维数组在编程中非常常见,而sizeof和strlen是两个常用的函数用于获取数组或字符串的长度。然而,在使用sizeof和strlen时,很多开发者都会遇到一些问题,这篇文章将介绍sizeof和...

    字符数组和字符串的sizeof( )和strlen().docx

    在C++编程语言中,了解如何获取数组或字符串的长度是非常关键的,这涉及到`sizeof()`和`strlen()`两个函数的使用。`sizeof()`运算符返回一个类型或变量所占用的字节数,而`strlen()`函数则计算一个以空字符'\0'结尾...

    字符数组和字符串的sizeof( )和strlen().pdf

    字符数组和字符串的sizeof()和strlen() 在C++编程语言中,sizeof()和strlen()是两个常用的函数,用于获取数组或字符串的长度。然而,这两个函数的功能和返回值有所不同,以下是对它们的详细介绍。 1. sizeof() ...

    解析C语言中的sizeof.rar

    当`sizeof`应用于数组时,它返回整个数组的大小,而不是单个元素的大小。例如: ```c int arr[5]; printf("Size of arr: %zu", sizeof(arr)); // 输出为20(假设int为4字节) ``` 需要注意的是,当数组作为函数...

    sizeof 的用法(大全)

    - 对于数组,`sizeof`返回整个数组所占用的内存大小,即数组元素个数乘以单个元素的大小。例如,`int arr[10];`的`sizeof(arr)`是40(假设int为4字节)。 - 对于结构体或联合体,`sizeof`返回其所有成员的大小之和...

    向数组中插入元素

    i &lt; sizeof(arr)/sizeof(arr[0]); i++)`。 三、插入元素的策略 在C++中,数组的大小是固定的,所以直接在中间插入元素会面临数组容量不足的问题。为了解决这个问题,通常有两种方法: 1. 动态内存分配:使用动态...

    C/C++ 避免数组越界的方法

    此外,程序员也可以使用一些技术来避免数组越界,例如,使用 sizeof 运算符来获取数组的大小,然后使用这个大小来限制数组的访问范围。又如,使用指针的加减运算来访问数组中的变量,但需要确保指针的移动次数与数组...

    数组与指针区别(很全面)

    - 使用`sizeof`操作符时,对于数组名,返回的是整个数组的大小。 - 对于指针,`sizeof`返回的是指针本身的大小,而不是它所指向的数据的大小。 **示例代码**: ```cpp #include using namespace std; int...

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

    在上述代码中,我们首先声明了一个关联数组$colorlist,并使用count()函数和sizeof()函数分别获取了数组的长度。由于$colorlist是一个一维数组,所以使用默认模式即可得到正确的长度。接着声明了一个多维数组$matrix...

    sizeof详细总结

    本文将对 sizeof 操作符进行详细的总结,包括其定义、语法形式、基本数据类型的 sizeof 值、指针变量的 sizeof 值、数组的 sizeof 值、结构体的 sizeof 值等。 定义和语法 sizeof 操作符的定义是:The sizeof ...

    matlab开发-sizeof

    例如,如果你有一个大小为1000的`double`数组,`sizeof(double)*1000`将给出该数组占用的总字节数。这在处理大量数据或者内存受限的环境下特别有用,因为它可以帮助你预测程序运行时的内存需求。 除了基础数据类型...

    MFC源代码 SIZEOF.02

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

    C++两个一维数组相加求和

    数组的长度可以通过`sizeof`运算符除以单个元素的大小来计算,即`sizeof(arr1) / sizeof(arr1[0])`,这里得到`len1`和`len2`。 接下来,我们需要一个新数组`sum`来存储两个数组相加的结果。由于数组不能动态扩展,...

    数组名 != 指针

    当我们对数组名使用`sizeof`时,得到的是数组本身的大小,而不是指针的大小。例如,对于`char str[10];`,`sizeof(str)`的结果为10(字节),而在32位系统上,`sizeof(char*)`的结果为4(字节)。 ```cpp #...

    sizeof和strlen区别

    在C/C++编程语言中,`...例如,在处理数组时,使用`sizeof`可以轻松地获取数组总大小,而在处理字符串时,应使用`strlen`来获取字符串的实际长度。在设计和调试程序时,理解这些细节将对提升代码质量起到关键作用。

    sizeof运算符的使用

    对于数组,`sizeof`运算符返回整个数组的大小,而不是单个元素的大小。例如: ```cpp int arr[5]; printf("Size of array: %zu\n", sizeof(arr)); // 输出整个数组的字节数,等于5 * sizeof(int) ``` 对于...

    sizeof的具体用法

    5. 数组的sizeof返回整个数组的字节数,而不是单一元素的字节数。 6. 结构体或联合体的sizeof是所有成员大小之和,加上必要的对齐填充。 四、sizeof与其他操作符的关系 sizeof具有较高的优先级(2级),高于除法和...

Global site tag (gtag.js) - Google Analytics