用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(int[10])`返回40(假设`int`占4字节)。 - 需要注意的是,当数组作为函数参数传递时,它会退化为指针,因此`sizeof`只会返回指针的大小,而...
"从一维数组看sizeof和strlen" 一维数组在编程中非常常见,而sizeof和strlen是两个常用的函数用于获取数组或字符串的长度。然而,在使用sizeof和strlen时,很多开发者都会遇到一些问题,这篇文章将介绍sizeof和...
在C++编程语言中,了解如何获取数组或字符串的长度是非常关键的,这涉及到`sizeof()`和`strlen()`两个函数的使用。`sizeof()`运算符返回一个类型或变量所占用的字节数,而`strlen()`函数则计算一个以空字符'\0'结尾...
字符数组和字符串的sizeof()和strlen() 在C++编程语言中,sizeof()和strlen()是两个常用的函数,用于获取数组或字符串的长度。然而,这两个函数的功能和返回值有所不同,以下是对它们的详细介绍。 1. sizeof() ...
当`sizeof`应用于数组时,它返回整个数组的大小,而不是单个元素的大小。例如: ```c int arr[5]; printf("Size of arr: %zu", sizeof(arr)); // 输出为20(假设int为4字节) ``` 需要注意的是,当数组作为函数...
- 对于数组,`sizeof`返回整个数组所占用的内存大小,即数组元素个数乘以单个元素的大小。例如,`int arr[10];`的`sizeof(arr)`是40(假设int为4字节)。 - 对于结构体或联合体,`sizeof`返回其所有成员的大小之和...
i < sizeof(arr)/sizeof(arr[0]); i++)`。 三、插入元素的策略 在C++中,数组的大小是固定的,所以直接在中间插入元素会面临数组容量不足的问题。为了解决这个问题,通常有两种方法: 1. 动态内存分配:使用动态...
此外,程序员也可以使用一些技术来避免数组越界,例如,使用 sizeof 运算符来获取数组的大小,然后使用这个大小来限制数组的访问范围。又如,使用指针的加减运算来访问数组中的变量,但需要确保指针的移动次数与数组...
- 使用`sizeof`操作符时,对于数组名,返回的是整个数组的大小。 - 对于指针,`sizeof`返回的是指针本身的大小,而不是它所指向的数据的大小。 **示例代码**: ```cpp #include using namespace std; int...
在上述代码中,我们首先声明了一个关联数组$colorlist,并使用count()函数和sizeof()函数分别获取了数组的长度。由于$colorlist是一个一维数组,所以使用默认模式即可得到正确的长度。接着声明了一个多维数组$matrix...
本文将对 sizeof 操作符进行详细的总结,包括其定义、语法形式、基本数据类型的 sizeof 值、指针变量的 sizeof 值、数组的 sizeof 值、结构体的 sizeof 值等。 定义和语法 sizeof 操作符的定义是:The sizeof ...
例如,如果你有一个大小为1000的`double`数组,`sizeof(double)*1000`将给出该数组占用的总字节数。这在处理大量数据或者内存受限的环境下特别有用,因为它可以帮助你预测程序运行时的内存需求。 除了基础数据类型...
MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 SIZEOF.02MFC源代码 ...
数组的长度可以通过`sizeof`运算符除以单个元素的大小来计算,即`sizeof(arr1) / sizeof(arr1[0])`,这里得到`len1`和`len2`。 接下来,我们需要一个新数组`sum`来存储两个数组相加的结果。由于数组不能动态扩展,...
当我们对数组名使用`sizeof`时,得到的是数组本身的大小,而不是指针的大小。例如,对于`char str[10];`,`sizeof(str)`的结果为10(字节),而在32位系统上,`sizeof(char*)`的结果为4(字节)。 ```cpp #...
在C/C++编程语言中,`...例如,在处理数组时,使用`sizeof`可以轻松地获取数组总大小,而在处理字符串时,应使用`strlen`来获取字符串的实际长度。在设计和调试程序时,理解这些细节将对提升代码质量起到关键作用。
对于数组,`sizeof`运算符返回整个数组的大小,而不是单个元素的大小。例如: ```cpp int arr[5]; printf("Size of array: %zu\n", sizeof(arr)); // 输出整个数组的字节数,等于5 * sizeof(int) ``` 对于...
5. 数组的sizeof返回整个数组的字节数,而不是单一元素的字节数。 6. 结构体或联合体的sizeof是所有成员大小之和,加上必要的对齐填充。 四、sizeof与其他操作符的关系 sizeof具有较高的优先级(2级),高于除法和...