2013年8月23日

为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈

摘要: http://bbs.chinaunix.net/thread-2304248-1-1.html之前看了很多关于uboot的分析,其中就有说要为C语言的运行,准备好堆栈。而自己在Uboot的start.S汇编代码中,关于系统初始化,也看到有堆栈指针初始化这个动作。但是,从来只是看到有人说系统初始化要初始化堆栈,即正确给堆栈指针sp赋值,但是却从来没有看到有人解释,为何要初始化堆栈。所以,接下来的内容,就是经过一定的探究,试图来解释一下,为何要初始化堆栈,即:为何C语言的函数调用要用到堆栈,而汇编却不需要初始化堆栈。要明白这个问题,首先要了解堆栈的作用。关于堆栈的作用,要详细讲解的话,要很长的篇 阅读全文

posted @ 2013-08-23 19:15 イケメンおっさん_汪汪 阅读(292) 评论(0) 推荐(0) 编辑

统计某一句话里面 元音字母的个数

摘要: 应用switch 语句, 1 #include 2 int main(void) 3 { char ch; 4 int a_ctl,e_ctl,i_ctl,o_ctl,u_ctl; 5 a_ctl = e_ctl = i_ctl = o_ctl = u_ctl =0; 6 printf(" Enter some text,and a # to quit\n" 7 " I will tell you the number of the vowel\n" ); 8 while((ch=getchar()) !=... 阅读全文

posted @ 2013-08-23 17:08 イケメンおっさん_汪汪 阅读(527) 评论(0) 推荐(0) 编辑

有关continue的小程序(1)

摘要: 看一个 continue的程序c prim plus 7.9 1 #include 2 #include 3 int main(void) 4 { char ch; 5 printf(" You give me a letter,\n and I give you a word;\n" 6 " Input a # to quit\n"); 7 while((ch=getchar())!='#') 8 { 9 if('\n' == ch) continue; //处理刚开始输入的换行符... 阅读全文

posted @ 2013-08-23 16:36 イケメンおっさん_汪汪 阅读(556) 评论(0) 推荐(0) 编辑

指针类型对指针做差的影响

摘要: 尊重别人的劳动成果:http://www.cnblogs.com/nightwatcher/archive/2011/03/19/1989028.html 之前知道指针变量其实存放的就是数据在存储空间存储的地址,而地址在32位机上往往都是32位数据,感觉都是一样的,与所指向的数据的类型关系不大。所以一直觉得指针类型的唯一作用,就是提高程序可读性,防止我们滥用指针。至于指针做差的返回值应该就是地址的差值。但是最近有一次对指针进行做差的时候,无意中发现其实并没有这么简单。源代码如下: 1 #include 2 3 int main() 4 { 5 int *p1 = (i... 阅读全文

posted @ 2013-08-23 14:27 イケメンおっさん_汪汪 阅读(383) 评论(0) 推荐(0) 编辑

导航