Lightup 发表于 2021-1-27 15:33:22

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]
查看完整版本: C:S1E39的翻转字符串问题