CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

这程序怎运行!*a+=k;什么意思?

楼主sun999(风子)2005-01-15 19:09:01 在 C/C++ / C语言 提问

main()  
  {  
    int   x=0;  
    sub(&x,8,1);  
    printf("%d\n",x);  
    getch();  
    }  
    sub(int   *a,int   n,int   k)  
          {  
            if(k<=n)  
              sub(a,n/2,2*k);  
              *a+=k;  
              }  
   
    请问这段程序的运行过程怎的??  
  还有*a+=k;这句的意思是什么?? 问题点数:20、回复次数:3Top

1 楼hawkxjy(developer)回复于 2005-01-15 19:25:13 得分 20

sub(int   *a,int   n,int   k)  
  {  
            if(k<=n)                   //递归终止条件  
              sub(a,n/2,2*k);   //循环递归  
            *a+=k;                       //递归函数实际上要执行的逻辑部分  
  }  
  所以,sub(&x,8,1);就是循环递归的过程,递归层次直到k<=n时结束。总共对sub函数递归了2层:  
  sub(&x,   8,   1)->sub(&x,   4,   2)->sub(&x,   2,   4)  
  各步相应骤执行结果:  
  7->6->4  
  x的最终结果为7  
   
   
  另外:*a+=k;因为a是一个int指针,所以首先解引用,然后在加k;相当于:  
  int   t   =   *a;  
  t   =   t+k;  
  *a   =   t;Top

2 楼sun999(风子)回复于 2005-01-15 20:56:37 得分 0

明白啦!谢谢!Top

3 楼dongyuanzhang(阿林)回复于 2005-01-15 21:00:05 得分 0

hawkxjy(developer)    
   
  解释的不错,考察的是传址对本身值的影响和递归调用。Top

相关问题

  • “安装程序运行时文件错误”是什么意思?
  • 程序运行,提示信息什么意思?
  • iis一运行asp程序出现这个提示什么意思?
  • 运行程序出现以下错误是什么意思呀?急急急
  • K,我真不好意思再搞程序了!
  • 运行JAVA程序
  • 不好意思,程序运行到sapace()时提示找不到工程或者库
  • ASSERT(m_hFile != (UINT)hFileNull);我的程序运行错误说这是病因,这句什么意思!
  • 不好意思,问题问得有错误,想知道其它运行程序的安装目录
  • 内存泄露是什么意思?它会影响程序的正确运行吗?

关键词

  • sub
  • 结果

得分解答快速导航

  • 帖主:sun999
  • hawkxjy

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo