黑马程序员技术交流社区

标题: 跪求大神指点这段代码如何分析,谢谢 [打印本页]

作者: Sunshine丶星空    时间: 2016-2-26 13:17
标题: 跪求大神指点这段代码如何分析,谢谢

int a;
intgetResult(int a){

return a++;  

}
int main(){

a = getResult(a);
printf(“a=%d”,a);

{

int a = 10;
a = getResult(a);   

}


printf(“a=%d”,a);            

}



作者: 米阳    时间: 2016-2-29 10:10
首先 , 从上向下把每一句代码分析一边
其次 , 从main()函数开始 , 按执行顺序在逐句分析
作者: 冷傲阳    时间: 2016-2-29 23:49
计算机会先逐行的读取代码,直到读取到main函数,程序从这里进入,读到a = getResult(a);,a没有声明,系统会报错吧
作者: 菜逼    时间: 2016-3-1 00:06
本帖最后由 菜逼 于 2016-3-1 00:07 编辑

#include <stdio.h>

//定义一个全局变量a,此变量的作用域是整个程序,我叫它做全局变量a
int a; //全局变量a作用域开始

//这个函数里也定义了一个变量a,作用域是这个函数的函数体,我叫它做res_a
int getResult(int a){//res_a的作用域开始
    return a++;
}//res_a的作用域结束


int main(){
   
   
    a = getResult(a);   //在这个代码之前,这个函数之中并没有定义同名的变量a,此时a是全局变量a.在Xcode中这个a是高亮显示的
   
   
    printf("a = %d",a); //这个a也是全局变量a
   
    {//大括号a的作用域开始
        int a = 10;         //在这句代码执行后,定义了一个局部变量a,作用域是最近的一对大括号,我叫它大括号a
        a = getResult(a);
    }//大括号a的作用域结束
   
    printf("a = %d",a);   //全局变量a
   
    return 0;
}//全局变量a作用域结束

//在一个函数体中,同名的局部变量的优先级高于全局变量.
//在一个函数体重,如果存在同名的全局变量和局部变量,局部变量会把全局变量暂时屏蔽,一直到局部变量的作用域结束


我是ios基础班的学生,欢迎大神指出不足或者写错的地方.欢迎多多交流{:2_32:}
作者: 菜逼    时间: 2016-3-1 00:08
我靠,第一次这么认真回帖




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2