代码中的两个sizeof用法有问题吗

来源:百度知道 编辑:UC知道 时间:2024/06/20 12:47:12
代码中的两个sizeof用法有问题吗?
void UpperCase(char str[])//将str中的小写字母转换成大写字母
{
for (size_t i=0;i<sizeof(str)/sizeof(str[0]) ;i++ )
if ('a' <= str[i] && str[i] <= 'z')
str[i]-=('a'-'A');
}
char str[] = "aBcDe";
cout << "str 字符长度为:" << sizeof(str)/sizeof(str[0]) << end1;
UpperCase(str);
cout << str << end1;
这是java的一道笔试题,望高手解答

sizeof(str)计算了整个数组所占用的空间数。假设每个元素占用2个字节,而数组中有100个元素,那么sizeof(str)就是200个字节。计算数组个数显然就是:总字节数除以每个元素的字节数=元素个数。
在此处,每个元素都是一个char类型,占用1个字节。

注意,在c++中不能使用这种方式得到字符串长度。char *str; sizeof(str)是等于一个指针的大小,32位系统中sizeof(str)=4,而不是像此处,sizeof(str)算成是整个数组的大小。