下面給大家分享一下這些代碼,共有兩種方法實現,用指針實現如下:
#includeint 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#include int main() { char str[] = "Hello world"; int len = strlen(str); char t; for (int i =0; i
Heap與stack得差別:
Heap是堆,stack是棧
stack得空間由操作系統自動分配/釋放,Heap的空間手動分配/釋放
stack的空間有限,Heap 是很大的自由存儲區
C中的malloc函數分配的內存空間即在堆上,C++中對應的new操作符
程序在編譯期對變量和函數分配內存都在棧上進行,且程序運行過程中函數調用時參數的傳遞也在棧上進行