以下代码中的两个 sizeof 用法有问题吗
void upperCase(char str[]){ //将 str 中的小写字母转换成大写字母
for(int i=0; i<sizeof(str)/sizeof(str[0]); ++i){
if('a'<=str[i] && str[i]<='z')
str[i] -= ('a'-'A');
}
}
int main(){
char str[] = "aBcDe";
cout << "str 字符串长度为:" << sizeof(str)/sizeof(str[0]);
cout << endl;
upperCase(str);
cout << str << endl;
return 0;
}
答:在 upperCase 方法中,for 循环的 sizeof(str)的值将总是 4,所以该方法只能将参数中的字符串的前四个字符转换成大写字母。