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;
}