为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

largeQ 2018-07-25 08:04:53
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);}
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

主函数中的sizeof没有问题,upper_case中的sizeof使用错误,因为数组作为参数传递会退化为指针,upper_case中的str实际上是char*指针,它的sizeof为指针类型大小而非数组大小。


查看完整回答
反对 回复 2018-07-26
  • 1 回答
  • 0 关注
  • 853 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信