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

void upper_case(char str[ ])
{
int i;
for(i = 0; i < sizeof(str) / sizeof( str[0] ); i++)
{
if(str[i] > ‘a’ && str[i] < ‘z’)
str[i] -= (‘a’ - ‘A’);
}
}
int main(void)
{
char str[ ] = “aBcDe”;
printf(“length of the string: %d\n”, sizeof(str) / sizeof(str[0]));
upper_case(str);
}

largeQ
浏览 854回答 1
1回答

斯蒂芬大帝

主函数中的sizeof没有问题,upper_case中的sizeof使用错误,因为数组作为参数传递会退化为指针,upper_case中的str实际上是char*指针,它的sizeof为指针类型大小而非数组大小。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java