C:S1E39的翻转字符串问题
本帖最后由 Lightup 于 2021-1-27 17:54 编辑/*关于为什么要str要减2?好像是这样的,如下*/
#include <stdio.h>
void main()
{
char *str = "abc";
char *start = str;
char *left = str;
char ch;
printf("start:%p\n",start);
printf("left:%p\n\n",left);
if (str != NULL)
{
printf("str:%p\n",str);
printf("*str:%c\n\n",*str);
// 定位到字符串的最后一个字符
while (*str++) //1.a2.b 3.c4.'/0'(此时地址又后移了)
{
printf("str:%p\n",str); //1.b的地址 2.c的地址3.'\0'的地址
printf("*str:%c\n",*str); //1.b 2.c3.'\0'
}
printf("\nstr:%p\n",str);
printf("*str:%c\n",*str);
str -= 2;
printf("str:%p\n",str);
printf("*str:%c\n",*str);
while (left < str)
{
ch = *left;
*left++ = *str;
*str-- = ch;
printf("str:%p\n",str);
}
}
}
页:
[1]