我真不聪明
2021-09-21 04:00
采纳率: 100%
浏览 40

初学者请教一下关于C语言逆序字符串的问题

为什么显示Memory space at 0x1000b8(object 'p') is not initialized

#include <stdio.h>
#include <string.h>

void fun(char *str)

{
    char *p;
    int i=0;
    if(*str!='\0'){
        fun(str+1);
        *p=*str;
    }
    for(i=0;i<strlen(str)-1;i++){
        str[i]=p[i];
    }
}

int main()
{
    char *a="abcdefg";
    fun(a);
    printf("%s\n",a);
}


  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • qzjhjxj 2021-09-21 11:17
    已采纳

    修改如下,供参考:

    #include <stdio.h>
    #include <string.h>
    
    void fun(char* str)
    {
        char* p = str, c;
        while (*p) p++;
        p--;
        if (str < p) {
            c = *str;
            *str = *p;
            *p = '\0';
            fun(str + 1);
            *p = c;
        }
    }
    int main()
    {
        char a[] = "abcdefg";//char *a = "abcdefg";
        fun(a);
        printf("%s\n", a);
        return 0;
    }
    
    
    评论
    解决 1 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题