sinat_29621543
自自然卷
2016-08-29 16:11

返回值是指针时子函数的内存释放问题,子函数里增加了printf造成main函数输出结果不同的原因?

reverseString中printf那句不注释,main函数里能够打印出“olleh”,而注释那句后main函数打印出的就是乱码。
reverseString中printf那句不注释为什么主函数里能够打印出“olleh”?
reverseString中注释与不注释printf那句会对s2的内存释产生影响?
还是代码写的有问题?我是在codeblocks上运行的,比较困惑,谢谢!

#include <stdio.h>
#include <stdlib.h>

char* reverseString(char* s) {
    char *p1 = s;
    char s2[100];
    int i = 0;
    char *p2 = s2;
    while(*p1!='\0'){
        ++p1;
        ++i;
    }
    --p1;
    while(i>0){
        (*p2++) = (*p1--);
        --i;
    }
    *p2 = '\0';
    //printf("%s\n",s2);//如果注释这句,主函数会打印乱码;如果不注释则能够打印出"olleh"
    return s2;
}

int main(){
    printf("%s",reverseString("hello"));
    return 0;
}
  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答