以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 关于递归的问题 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=54567) |
-- 作者:jiangwei -- 发布时间:10/29/2007 12:32:00 PM -- 关于递归的问题 # include "stdio.h" void reverse(const char * const sPtr); int main() printf("Enter a line of text: "); return 0; void reverse(const char * const sPtr) 请问函数定义里,“递归步骤”中它是怎么执行的啊?怎么是(&sptr[1]),输出是(sptr[0]) |
-- 作者:卷积内核 -- 发布时间:10/29/2007 5:25:00 PM -- if(sPtr[0] == '\0')-------------------------如果结束退出 return; else& { reverse(&sPtr[1]); /*递归步骤*/---------该函数就是递归函数,调用本身 putchar(sPtr[0]);-----------递归出来放置最后一个字符。 } |
-- 作者:jiangwei -- 发布时间:10/29/2007 10:36:00 PM -- 还问一个问题,如果一个数组,比如说a[4]={1,2,3,4}.a[0]的地址假如说是0000吧,a[1],a[2]a[3]分别为0001,0002,0003的话,如果现在把a[1]的地址值赋给a[0],那么a[0]=2,a[1]=3,a[2]=4,是这样吗? |
-- 作者:卷积内核 -- 发布时间:10/30/2007 8:00:00 AM -- 不能这么理解,这根本就不是同一个概念,要清楚地址和里面的值是完全两回事。拿家庭来说地址就是门牌号,里面的人才是内容。这两个概念搞混了 你后面的指针就没法学了。 |
-- 作者:jiangwei -- 发布时间:10/30/2007 10:19:00 AM -- 哦,但我觉得我问你的那个关于递归的问题,它在执行的时候好像就是用的这个原理啊,我觉得内存的地址值是固定不变的,如果把原来的a[1]改成了a[0],那后面的a[2],a[3]以后的,我觉得就是a[1],a[2]了吧? |
-- 作者:卷积内核 -- 发布时间:10/30/2007 1:49:00 PM -- 它们执行不是对地址操作,而是里面的值。你没有必要关心它的具体所在内存地址是多少,只关心你想操作的数据就可以了。 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |