自自然卷
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条回答
为你推荐
- 向函数传入一个结构体指针什么时候才不需要返回值?
- c++
- 1个回答
- 如何返回结构体指针?
- c语言
- c++
- 1个回答
- 全局重载后的new与cin连用为什么可能进入死锁状态
- c++
- 2个回答
- (C语言)在二叉搜索树的学习时遇到了问题,求大佬帮忙看看
- c语言
- c++
- 2个回答
- 关于指针函数,将指针赋值为函数返回值时......
- c语言
- c++
- 3个回答
换一换