各位温拿、胜利组、E cup、30cm、真强者、pavone、高富帅、金城武、小妹,
大家好!打给后!胎嘎后!口泥几哇!AV8D!Ladies and gentlemen!
※ 引述《ohohohya (安安你好我草泥马)》之铭言:
: ※ 引述《BBS5566 (加鲁鲁兽 o'_'o)》之铭言:
: : 各位八仙乐园的高富帅白富美30cmFcup大家好! o'_'o
: : 本加鲁最近正在研究C语言
: : 虽说摸熟C语言会摸不到C罩杯 可是本加鲁为了生活也只能忍惹
: : 就在本加鲁输入
: : for (i=1;i<=9;i++){
: : 之后
: : 从背后经过的室友一把抓住本加鲁的肩膀并说“你的大括号没有换行喔(笑)。”
: : 本加鲁心想不换行大括号不是男人的浪漫吗?
: : 请问各位有没有大括号要不要换行的八卦?
: 如果是我我会建议换行
: 大挂号内的东西在C的世界内称为scope
: 而scope内的东西完全是另一个世界
: 例如
: int main()
: {
: int a=1;
^^^^^^^^
: {
: int a=1;
: }
: }
: 这两个整数变量a在compile后会有两个位址在heap内
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
小鲁的朋友说,他挑个小小毛病:变量a看起来好像是main函数的local
variable,应该是在stack里面,而非heap里面喔~
函数的local variables与呼叫函数时传入的参数,都会塞在堆叠
(stack)里面,为了让被呼叫的函数执行完后,还知道要回到哪里执
行,还要在呼叫时把return address(也就是被呼叫的函数执行完后,
下一个要执行的指令的位置)一并推到stack!
以上是本鲁的朋友说的。
: 像if for while switch你可以看成条件若有达成则执行底下的scope
: 因此上述这些函式在应用时可以直接写成
: if(a==0)
: function();
: for(a=0;a<=b;a++)
: function();
: 之类的而不用加{}
: 因此scope的应用还有一种如
: char function(char *p)
: {
: blablabla.......
: }
: char string[10]
: {
: function();
: }
: 意思就是将function的执行结果放入字符阵列string中
: 有了scope的概念后程式可以变得非常灵活 提供你做参考