以下代码中的两个sizeof用法有问题吗?voi

17 查阅
以下代码中的两个sizeof用法有问题吗?void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母{for( size_t i=0; it;sizeof

参考答案:

正确答案:

\r\n

:函数内的sizeof有问题。根据语法,sizeof
如用于数组,只能测出静态数组的大小,无法检测
动态分配的或外部数组大小。函数外的str 是一个
静态定义的数组,因此其大小为6,函数内的str
实际只是一个指向字符串的指针,没有任何额外的
与数组相关的信息,因此sizeof作用于上只将其当
指针看,一个指针为4个字节,因此返回4。