以下代码中的两个 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,所以该方法只能将参数中的字符串的前四个字符转换成大写字母。