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为指针类型大小而非数组大小。
添加回答
举报
0/150
提交
取消