递归reverse_string(char * string)性能。

逆转 原始字符串

更改

相反,打印出的。

/*
编写一个函数reverse_string(char * string)(递归实现)
实现:将參数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。 */ #include <STDIO.H> //1
void reverse_string(char * string)
{
static char a[100]={0}; // 静态变量 记录字符串
static char *p=a; //两个指针,不同地方使用
static char *q=a;
if(*string!='\0') //递归出口
{
*q=*string; //递归前使数组a 元素 初始化为目标字符串
q++;
reverse_string(string+1);//递归调用
*string=*p; //实现翻转
p++;
}
} int main()
{
char s[]="hello world";
reverse_string(s);
printf("%s\n",s);
return 0;
}

//2.
#include <STDIO.H>

void test(char *p)
{
static char *ep=p;
char aa=*p;
if(*p!='\0')
test(p+1);
else
return ;
*ep=aa;
ep++;
} int main() {
char a[]="hello";
test(a);
puts(a);
return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

【C语言】reverse_string(char * string)(递归)的更多相关文章

  1. 编写一个函数 reverse_string(char * string)实现:将参数字符串中的字符反向排列 。(递归实现)

    要求:不能使用C函数库中的字符串操作函数. 思路:在递归函数的调用时,先应该定义一个指针型char字符串.函数内部应先调用自己,在打印,这样才能保证字符串是从最后一个开始输出. #include< ...

  2. const char* && string && String^ 类型转换

    const char* && string && String^ 类型转换 const char* ---> string const char * cw= &q ...

  3. const char* <----- > string

    (1) const char*      <-----     string const char* const_txt_path=txt_path.c_str(); (2)  string  ...

  4. Javascript语言精粹之String常用方法分析

    Javascript语言精粹之String常用方法分析 1. String常用方法分析 1.1 String.prototype.slice() slice(start,end)方法复制string的 ...

  5. c#中 uint--byte[]--char[]--string相互转换汇总

    原文:c#中 uint--byte[]--char[]--string相互转换汇总 在在做一些互操作的时候往往需要一些类型的相互转换,比如用c#访问win32api的时候往往需要向api中传入DWOR ...

  6. MFC中char*,string和CString之间的转换

    MFC中char*,string和CString之间的转换 一.    将CString类转换成char*(LPSTR)类型 方法一,使用强制转换.例如:  CString theString( &q ...

  7. CString转char * ,string

    CString头文件#include <afx.h> string头文件#include <string.h> 1.CString转char * CString cstr; c ...

  8. wchar_t char string wstring 之间的转换

    wchar_t char string wstring 之间的转换 转:http://blog.csdn.net/lbd2008/article/details/8333583 在处理中文时有时需要进 ...

  9. VS2013 MFC C++ CString ,const char , char, string 类型转换

    VS2013 测试 以下测试加入头文件: # include <string>#include <cstdlib>using namespace std; //-------- ...

随机推荐

  1. C语言cgi(1)

    1Columbia Universitycs3157 – Advanced ProgrammingSummer 2014, Lab #2, 60ish pointsJune 9, 2014Follow ...

  2. Linux学习记录--命名管道通信

    命名管道通信 什么是命名管道 一个主要的限制是,它是匿名管道的应用还没有名字,因此,只有它可以用于进程间通信的方式与亲缘关系.在命名管道(named pipe或FIFO)提出后,该限制得到了克服.FI ...

  3. 03.Msbuild

    MSBuild的深入认识 分类: 专题开发 自动化 2009-01-20 11:56 5711人阅读 评论(1) 收藏 举报 任务引擎脚本工作扩展build 最近在从事自动构造工作的过程中,对MSBu ...

  4. web网站架构

    浅谈web网站架构演变过程   前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变.   该系统具备的功能:   用户模块:用户注册和管理 商品模块:商品展示和管 ...

  5. Swift语言教程中文文档

    Swift语言教程中文文档 Swift语言教程(一)基础数据类型 Swift语言教程(二)基础数据类型 Swift语言教程(三)集合类型 Swift语言教程(四) 集合类型 Swift语言教程(五)控 ...

  6. libpomelo 增加编译静态库cocos2d-x xcode 工程

    离 https://github.com/NetEase/libpomelo 下载最新版本.拉开拉链,静态库 ./pomelo_gyp -DTO=ios ./build_ios ./build_ios ...

  7. Java反射探索研究(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankakay 摘要:本文详细深入讲解是Java中反射的机制,并介绍了如何通过反射来生成对象.调用函数.取得 ...

  8. Java Web整合开发(附录1) - 安装配置环境

    1. Install JDK http://blog.csdn.net/sonnet123/article/details/9169741 Download JDK http://www.oracle ...

  9. CLR Profile解决内存占用过高

    CLR Profile解决内存占用过高的问题 炮哥:"嘿,哥们,忙啥呢,电脑卡成这逼样." 勇哥:"在用CLR Profile工具分析下FlexiPrint的内存占用情况 ...

  10. Linux Kernel(Android) 加密算法汇总(三)-应用程序调用内核加密算法接口

    于Linux Kernel(Android) 加密算法总结(cipher.compress.digest)文章中.介绍了怎样在内核中增加三种不同类型的内核加密算法, 并给出了在内核模块中怎样调用他们的 ...