您的位置:首页 > 编程语言 > C语言/C++

面试珠玑 C语言实现字符串倒序

2015-03-05 09:08 253 查看
1 #include <stdio.h>

  2 #include <stdlib.h>

  3 #include <string.h>

  4

  5 int main()

  6 {

  7 char *src="abcdefghijk";

  8 int len=strlen(src);

  9 char *dest = (char *)malloc(len+1);

 10

 11 char *a=&src[len-1];

 12 char *b=dest;

 13

 14 while(len-- != 0)

 15 *b++ = *a--;

 16 printf("%s\n",dest);

 17 free(dest);

 18 dest = NULL;

 19 return 0;

 20 }

运行情况:



第9句:
char *dest = (char *)malloc(len+1);<===>
char *dest = NULL;
dest
= (char *)malloc(len+1);//字符串以\0结尾,因此也给\0分配一个字节空间,malloc的类型为void *,因此强制转换为char *类型。
 
第11,12句:
定义一个字符指针a,指向字符串src的最后一个字符k,定义一个字符指针b,指向dest

第15句:
*b++
= * a--;<==>等价于下面三句

1.*b = *a;
2. b++;
3. a--;

第16句:
想想为什么是返回dest,而不是b?

第17句:
防止内存泄露,在前面申请的内存空间现在都给他释放掉吧!

第18句:
释放掉内存后dest成了一个也指针,必须将其赋值为空。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐