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
提交
取消