鱼C论坛

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

C函数问题

[复制链接]
发表于 2012-11-16 20:41:06 | 显示全部楼层 |阅读模式
5鱼币




  1. #include<stdio.h>
  2. void convert(char *a,int n)
  3. {
  4. int i;
  5. if((i=n/10)!=0) convert(a+1,i);
  6. *a=n%10+'0';
  7. }
  8. int main()
  9. { int number;
  10. char str[10]=" ";
  11. scanf("%d",&number);
  12. convert(str,number);
  13. puts(str);
  14. return 0;
  15. }
  16. 已知程序功能是逆序存放。输入483,得384
  17. convert(a+1,i),知道是递归,a+1?
复制代码


最佳答案

查看完整内容

a+1 就是数组指针向后移一位 第一次指针指向的是a[0] +1后 就是a[1]了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-16 20:41:07 | 显示全部楼层
a+1
就是数组指针向后移一位
第一次指针指向的是a[0]   
+1后  就是a[1]了
小甲鱼最新课程 -> https://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
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-11-17 13:28:26 | 显示全部楼层
数组元素用指针表示的一种形式 a+1就是数组第二个元素的地址,而a是数组第一个元素的地址。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-1 21:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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