下面给大家分享一下这些代码,共有两种方法实现,用指针实现如下:
#include <stdio.h> int main() { char *src ="hello world"; int len = strlen(src); char *dest = (char *)malloc(len+1);//要分配一个内存空间 char *d =dest; char *s = &src[len-1];//指向最后一个字符 while (len--!=0) *d++ = *s--; *d=0;//尾部要加‘\0‘ printf("%s\n",dest); free(dest);//使用完应当释放空间,以免造成内存泄漏 dest = NULL;//防止产生野指针 return 0; }
#include <stdio.h> #include <string.h> int main() { char str[] = "Hello world"; int len = strlen(str); char t; for (int i =0; i<len/2; i++) { t =str[i]; str[i] = str[len-i-1];//交换字符 str[len-i-1] = t; } printf("%s\n",str); return 0; }
Heap与stack得差别:
Heap是堆,stack是栈
stack得空间由操作系统自动分配/释放,Heap的空间手动分配/释放
stack的空间有限,Heap 是很大的自由存储区
C中的malloc函数分配的内存空间即在堆上,C++中对应的new操作符
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行
原文:http://blog.csdn.net/hanhailong18/article/details/19897703