为什么输出这个程序总是:
example
example
如果我在第二个for for循环中改变第一行,那么输出将如下所示:
EXAMPLE
EXAMPLE
我做错了什么?
string key = "EXAmple";
string ukey = key;
string lkey = key;
for (int i = 0; i < strlen(key); i++)
{
ukey[i] = toupper(key[i]);
lkey[i] = tolower(key[i]);
}
printf("%s\n", ukey);
printf("%s\n", lkey);
答案 0 :(得分:5)
string
的定义很可能是char*
。因此,key
,ukey
和lkey
实际上是指向完全相同内存的指针;它们只是同一个东西的别名。
答案 1 :(得分:2)
这里,ukey
和lkey
可能都是指向内存中同一数组的指针。在C中,数组引用只是指向数组中第一项的指针,并且使用[]运算符只返回数组中每个位置的值(取消引用)。
所以,ukey和lkey都指的是完全相同的字符。
您希望使用strcpy()
代替普通作业,或使用自定义类型string
的等效作品。
或者使用C ++及其字符串类型。