chp11_16函数作用域预处理位运算文件.docVIP

  • 1
  • 0
  • 约5.45千字
  • 约 9页
  • 2016-12-22 发布于河南
  • 举报
11、12、13、15、16章知识点梳理 各章考分分布: 函数的调用(4分) 变量的作用域与生存期(2~4分) 编译预处理(2~4分) 位运算(2分) 各章知识点梳理: 函数的调用 考点1. 函数的嵌套调用:指函数调用作为函数的参数 例:fun(a, fun(3,4)); 考点2. 函数的递归调用:函数体中包含对本函数的调用语句 例: fun(int n) { if (n=0) return 1; else return n*fun(n-1); } 变量的作用域与生存期 考点1. 局部变量的作用域(有效范围) 局部变量类别 变量作用域 在函数内部定义的变量、函数的形参 本函数体 复合语句中定义的变量 复合语句内 例: #include stdio.h f1(int a, int b) //a,b为函数的形参 { int c=a+b; //c为函数内部定义的变量 printf(“%d”,a); //ok printf(“%d”,c); //ok } void main() { int x; {int y; //y为复合语句中定义的变量 printf(“%d”,y);} f1(x, 5); printf(“%d”,x); //ok printf(“%d”,a); //error printf(“%d”,y); //error } 考点2. 全局变量的作用域(有效范围) 全局变量:在函数外定义,可为本文件所有函数共用 有效范围:从定义变量的位置开始到本源文件结束 例如: int p=1; //p为全局变量,其作用域从此处一直到本文件结束 float f1(int a) { p+=a; // ok c1++; //error } char c1; ///c1为全局变量,其作用域从此处一直到本文件结束 char f2() { p++; //ok c1++; //ok } main() { printf(“%d”,p); ……. } 考点3. 同名变量作用域问题 (1) 局部变量与局部变量同名: 由于它们处于不同函数中,分别占用不同的存储单元,因此变量间互不影响 (2) 全局变量与局部变量同名: 局部变量优先,全局变量暂时被屏蔽 例如: #includestdio.h int x=1; //全局变量 void fun () { int a=1; x++; a++; printf(“%d,%d\n”,a,x); } main() { int a=4; int x=5; //局部变量 fun(); printf(“%d,%d\n”,a,x); //输出为4,5,即局部变量x的值屏蔽了全局变量x } 4. 静态变量的生存期 (1)静态变量的定义方式: static 类型 变量名 例如: static int i=3; (2)静态变量的作用域:同局部变量 (3)静态变量生存期:从程序开始执行到程序结束 (4)动态变量与静态变量生存期对比: 例1: main() { void fun (void); fun (); fun (); fun (); } void fun(void) { int x=0; //动态局部变量,每次fun函数被调用时均执行一次 x++; printf(“%d”,x); } 输出结果为:111 例2: main() { void fun (void); fun (); fun (); fun (); } void fun(void) { static int x=0; //静态局部变量, fun函数被调用时只执行一次 x++; printf(“%d”,x); } 输出结果为:123 编译预处理 考点1. 宏定义的定义方法、执行方式、与变量定义的区别(略) 考点2. 宏定义的嵌套 例如: #include stdio.h #define M 3 #define N M+5 #define L M*N void main() {printf(“%d”, L); //宏展开结果为:3*3+5 考点3. 带参数的宏定义(重点) 宏展开原则:在编译前进行,并且只进行机械的字符代换,在代换期间不要把字符当成变量进行运算。 位运算 考点1. 简单的位运算(按位与、或、异或、取反、左移、右移) 运算法则: 按位与(): 11=1, 10=0, 01=0, 00=0 按位或(|): 1|1=1, 1|0=1, 0|1=1, 0|0=0 按位异或(^): 1^1=1, 1^0=0, 0

文档评论(0)

1亿VIP精品文档

相关文档