为啥sizeof的值变了?
void UpperCase(char str[]){ int aaa = sizeof(str) - 1; int bbb = sizeof(str[0]); for (int i=0; i<=aaa/bbb - 1; ++i) { if ('a' <= str[i] && str[i] <= 'z') { str[i] -= ('a'-'A'); } }} char str[] = "aBcDe"; int aaa = sizeof(str) - 1; int bbb = sizeof(str[0]); cout << "str字符串长度为:" << aaa/bbb << endl; UpperCase(str); cout << str << endl;
int aaa = strlen(str) - 1;//sizeof改为strlen吧,因为这儿的str退化为指针了
[解决办法]
传值的时候给数组实际上就是指针,因此sizeof(str)=4
取长度要用strlen而不是sizeof
[解决办法]
template<int SIZE>
void UpperCase(char (&str)[SIZE])
{
int aaa = sizeof(str) - 1;
int bbb = sizeof(str[0]);
for (int i=0; i<=aaa/bbb - 1; ++i)
{
if ('a' <= str[i] && str[i] <= 'z')
{
str[i] -= ('a'-'A');
}
}
}
char str[] = "aBcDe";
int aaa = sizeof(str) - 1;
int bbb = sizeof(str[0]);
cout << "str字符串长度为:" << aaa/bbb << endl;
UpperCase(str);
cout << str << endl;
[解决办法]
被贬成指针了