首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C关于PUTCHAR

C关于PUTCHAR
EN

Stack Overflow用户
提问于 2013-01-26 12:33:00
回答 2查看 912关注 0票数 3
代码语言:javascript
复制
#include <stdio.h>

  void reverse( const char * const sPtr );

   int main ( void ) {

     char sentence[ 80 ];
     fgets( sentence, 80, stdin);

     reverse (sentence);
     return 0; 
  }

   void reverse( const char * const sPtr ){

     if (sPtr[0] == '\0' )
       return;
     else {
        reverse( &sPtr[1] );
        putchar (sPtr [0] );
     }

我通常对反向函数是如何工作的感到困惑?我不知道指针是如何递增来指向下一个字符的,我也不知道我是否确切地理解了putchar的作用。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-26 12:36:07

此函数递归地为字符串中的每个连续字符调用自身,并在到达\0字符时以相反的顺序展开打印字符。

步骤1

代码语言:javascript
复制
void reverse( const char * const sPtr ){ //This calls the function with string

这里,sPtr指向字符串的第一个字符。

步骤2

代码语言:javascript
复制
reverse( &sPtr[1] ); //This calls the function with the next character of the string

这一行就是让函数前进的地方。

步骤3

重复这两个步骤,您将到达字符串的末尾,即基本大小写。

它不是反转字符串,而是简单地反转打印字符串。

票数 4
EN

Stack Overflow用户

发布于 2013-01-26 12:42:05

假设字符串是"Viad“

首先它发送"Viad“到反向函数,

代码语言:javascript
复制
reverse("Viad");

在反向函数中,再次调用反向函数,但这一次是发送第二个字符的地址,即发送"iad“,

代码语言:javascript
复制
reverse("iad");

它再次调用反转,现在它发送"ad",

代码语言:javascript
复制
reverse("ad");

又是"d",

代码语言:javascript
复制
reverse("d");

现在它发送'\0‘结束字符

这一次它返回了,这是因为Stack functionality,也就是说,当我们调用某个oher函数时,它将变量的当前状态保存在堆栈中&在完成该函数的所有语句后,它返回意味着它从堆栈中弹出所有保存的状态

现在它转到statement

代码语言:javascript
复制
putchar('d');

它打印"d“&

然后打印"da“,然后是"dai”,然后是"daiV“,这意味着它继续倒带

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14533887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档