鱼C论坛

 找回密码
 立即注册
查看: 2670|回复: 3

C函数问题

[复制链接]
发表于 2012-11-16 20:41:06 | 显示全部楼层 |阅读模式
5鱼币
#include<stdio.h>
void convert(char *a,int n)
{
int i;
if((i=n/10)!=0) convert(a+1,i);
 *a=n%10+'0';
}
int main()
{ int number;
char str[10]=" ";
scanf("%d",&number);
convert(str,number);
puts(str);
return 0;
}
已知程序功能是逆序存放。输入483,得384
 convert(a+1,i),知道是递归,a+1?

最佳答案

查看完整内容

a+1 就是数组指针向后移一位 第一次指针指向的是a[0] +1后 就是a[1]了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-16 20:41:07 | 显示全部楼层
a+1
就是数组指针向后移一位
第一次指针指向的是a[0]   
+1后  就是a[1]了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-11-17 00:11:28 | 显示全部楼层
输入483,数组str为10个空格
进入函数convert
第一次convert
形参a指向数组str第一个元素地址,n=483,i=48,满足if,导致a+1(a指向数组str的下一个元素地址)
第二次convert
形参a指向数组str第二个元素地址,n=48,i=4,满足if,导致a+1
第三次convert
形参a指向数组str第三个元素地址,n=4,i=0,不满足if,*a=4+'0'='4'
回到第二次convert
形参a指向数组str第二个元素地址,n=48,*a='8'
回到第一次convert
形参a指向数组str第一个元素地址,n=483,*a='3'
此时数组str前三个元素为384(后面是7个空格)
退出convert
输出str,所以输出384
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-11-17 13:28:26 | 显示全部楼层
数组元素用指针表示的一种形式 a+1就是数组第二个元素的地址,而a是数组第一个元素的地址。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-18 21:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表