void UpperCase( char 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如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。函数外的str是一个静态定义的数组,因此其大小为6,函数内的str实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此sizeof作用于上只将其当指针看,一个指针为4个字节,因此返回4。