清网行动的全体演员表:以下代码中的两个sizeof用法有问题吗?

来源:百度文库 编辑:高校问答 时间:2024/04/20 08:36:51
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]) << endl;
UpperCase( str );
cout << str << endl;

sizeof用法正确,但是函数不能正常工作
字符串是一个数组,数组名是一个常量指针,因此sizeof(char*)就是一个指针的字节数,而不是字符串长度。
在这里应该用strlen

sizeof的用法是正确的。
在字母对换的地方写的有点问题。
建议可与先生成两个数组一个保存小写字模,一个保存大写字模。在得到字符窜的时候逐个和小写数组中的字符比较如果在之中用另一个数组中的大写字符代替就可以了。

sizeof没用错
但是
最好用strlen来判断字符串的长度

看看别人怎么回答的

我觉的是 是 str 的实际类型
是不是c#啊