面试珠玑 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成了一个也指针,必须将其赋值为空。
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成了一个也指针,必须将其赋值为空。
相关文章推荐
- 用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回
- 数据结构与算法——用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回
- C语言 写函数实现把一个字符串倒序
- 1.百度150道题,今天开刷。1.用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。
- 用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回
- 用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。
- 【面试算法系列】替换字符串中的空格为其他字符 - C语言实现
- C语言通过指针和数组实现字符串倒序
- 用c语言实现字符串倒序的几种情况
- c语言 实现 字符串倒序排列
- linux面试c语言编程----------把一个字符串倒序,如“abcd”倒序后变为“dcba”
- 用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回...
- 字符串移位(C语言实现,面试题目)
- C语言实现字符串倒序
- 用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回
- C语言字符切割函数的实现——不需要自己指定分配多少个字符串分组
- C语言实现从字符串中删除*
- C语言来实现字符串反转(只有单词反转,单词里的字母不反转)
- C++实现字符串单词的倒序
- C语言实现从字符串中删除*