C语言 编写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串

#include<stdio.h>#include<string.h>voiddaoxu(charx[],intn){chars;intk;for(k=0;k<n/2;k... #include<stdio.h>
#include<string.h>
void daoxu(char x[],int n)
{
char s;
int k;
for(k=0;k<n/2;k++)
{
s=x[k];x[k]=x[n-k-1];x[n-k-1]=s;
}
}
#define MA 100
main()
{
char a[MA];
int m;
scanf("%s",a);
printf("%s\n",a);
m=strlen(a);
daoxu(a,m);
printf("%s\n",a);
}
前面的函数明明是void,没有返回值,但为什么会起作用
展开
 我来答
风雷九州
推荐于2016-04-27 · TA获得超过3025个赞
知道大有可为答主
回答量:1127
采纳率:100%
帮助的人:433万
展开全部
这个和返回值没有关系的呀,返回值和参数是两个概念的。

参数是调用者传递给被调用者的一些信息,可以是一个或者多个,也可以没有。
而返回值是被调用者给调用者的信息,可以是一个,或者没有,不能是多个。

void daoxu(char x[],int n),这样子的写法,main函数传递给daoxu函数的是数组a和a的长度m,daoxu函数里面对数组a的更改一样会反馈到main函数里面,和daoxu函数有没有返回值完全没关系的
追问

上面daoxu(char x[],int n)是字符型,可是输入数字也成立,这是为什么?

还有下面这个函数有什么问题?求解


 

 
追答
数字也可以使用字符类型来表示,使用的是其ASCII码。

fanxu函数的返回值是char类型,但是return的是一个数组str1。

所以返回值只是str1的地址的低8位。
791423154
2014-12-09
知道答主
回答量:11
采纳率:0%
帮助的人:7.6万
展开全部
因为在传递参数的时候有两种方法,传值调用和传址调用,一般简单数据类型如int,float,double
等都是直接传值调用的,所以传入参数,原来的变量不会改变,但是数组类型的变量,他的值指的是该数组的首地址,首地址是不能够随意修改的,因此它将会视为传址调用,即在该数组的地址上直接改变里面的值,因此第一个函数就起作用了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
熊熊正平0z
2014-12-09
知道答主
回答量:21
采纳率:0%
帮助的人:11.2万
展开全部

void  main()
 {
   char a[MA];
   int m;
   scanf("%s",a);
   printf("%s\n",a);
   m=strlen(a);
   daoxu(a,m);
   printf("%s\n",a);
 }


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天雨下凡
2014-12-09 · 知道合伙人教育行家
天雨下凡
知道合伙人教育行家
采纳数:17564 获赞数:65157
爱电脑、爱数学、爱音乐; 熟悉VB、C/C++、JAVA; EXCEL与VBA有所研究…… 数学,一些会,一些被忘却……

向TA提问 私信TA
展开全部
数组作参数时,进行的是传址操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式