(1)sizeof
方法:sizeof(数组名)/ sizeof(数组类型名)
说明:数组占用字节除以数组类型所占字节,结果为数组元素个数
(2)strlen
说明:strlen,求字符串有效长度
方法:strlen(字符数组名) //结果为字符数组有效字符长度,不包括末尾的' /0'
注意:
当数组作为函数参数传递时,数组名代表的是数组的首址,而非数组内容,故无法使用sizeof和strlen;
所以,在传址时,应提供2个参数:1个是数组名,代表数组首地址;1个是数组元素个数,以便确定传递的次数。
当数组作为函数参数传递时,数组名代表的是数组的首址,而非数组内容,故无法使用sizeof和strlen;
所以,在传址时,应提供2个参数:1个是数组名,代表数组首地址;1个是数组元素个数,以便确定传递的次数。
例如:
#include
<
iostream
>
using namespace std;
void Sum( int array[ ])
{
cout << " sizeof(array)= " << sizeof (array) << endl;
}
void main()
{
int a[ ] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };
cout << " sizeof(a)= " << sizeof (a) << endl;
Sum(a);
}
using namespace std;
void Sum( int array[ ])
{
cout << " sizeof(array)= " << sizeof (array) << endl;
}
void main()
{
int a[ ] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };
cout << " sizeof(a)= " << sizeof (a) << endl;
Sum(a);
}
运算结果为:
sizeof(a)=40
sizeof(array)=4
sizeof(array)=4
分析:
当数组作为函数参数传递时,数组名代表的是数组的首址,即指针,而非数组内容。如果传递整个数组,会导致栈溢出的。
所以在主函数中使用sizeof计算出的是准确的数组长度。而在调用函数中,由于传递的数组不再是数组本身,而是其地址,所以用sizeof计算出的,实际上是数组地址的长度,这时的sizeof(array),实际上是sizeof(int)。