无法理解while
中的情况,如果可能的话可视化,请。
int main()
{
char text[] = "hello";
int nChars = sizeof(text)-1;
char *pStart = text;
char *pEnd = text + nChars - 1;
//can't understand this part
while (pStart < pEnd)
{
char tmp = *pStart;
*pStart = *pEnd;
*pEnd = tmp;
pStart++;
pEnd--;
}
cout << text << endl;
return 0;
}
答案 0 :(得分:2)
答案 1 :(得分:0)
您的代码很简单,可以在text
中交换字符。这里发生的是: -
您创建一个大小为6的字符数组text
,存储“hello \ 0”。
nChars
已分配代表\0
以外的文字中的字符数,因此此处为5(类似于strlen
)。
pStart
指向文字的第一个字母(即“h”)而pEnd
指向“o”(不是\0
)。
首先为tmp
分配'h'。然后将pStart's
字符替换为pEnd
即'o'的字符。然后将pEnd's
字符分配给存储在tmp
中的字符。因此pStart
&amp;中的字符pEnd
被交换(但指针仍指向同一位置,请小心!)。
pStart
会增加&amp; pEnd
递减(位置明智不是明智的,在这里再次小心!!)。所以现在pStart
指向'e'&amp; pEnd
到'l'。
程序重复!!!