以下代码中的两个sizeof用法有问题吗?
void UpperCase(char str[])
{for(size_t i = 0; i < sizeof(str)/sizeof(str[0]); ++i){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。