• 该例中,有三个模块,两个外部函数A和B,一个内部函数F, 该例中,有三个模块,两个外部函数A 一个内部函数F 只在Main.c文件中起作用,一个main Main.c文件中起作用 main函数 只在Main.c文件中起作用,一个main函数
20112011-3-28
7
动 过 演示 态 程
外部变量
在多模块程序设计中某函数可以被多个模块调用: 在多模块程序设计中某函数可以被多个模块调用:
此关键字虽然可缺省, 此关键字虽然可缺省,但 • 它的声明可以出现在多个模块中 写上则表明所声明的函 • 它的定义只能出现在一个模块中 数在其他模块中定义 这就是同一模块中的 外部函数:该函数在模块B中定义,但是在模块A 外部函数:该函数在模块B中定义,但是在模块A中需要 函数原型声明形式
• (1)在模块A的所有函数之外(一般最前面)声明 (1)在模块A的所有函数之外(一般最前面) 在模块 演示版作了简化) 表7.5 外部变量的全局作用域 (演示版作了简化) 该例中有一个外部变量,数组dys 该例中有一个外部变量,数组dys • (2)在模块A的某个需要使用外部变量的函数体内声明 (2)在模块 在模块A
20112011-3-28 13
const常量(选讲) pc不 const常量(选讲) *pc不 pc是变量 但是pc所指向的内容* 是变量, pc所指向的内容 pc是变量,但是pc所指向的内容
允许修改,通常用于作函数的形参,以保 允许修改,通常用于作函数的形参, 在定义指针时根据const与指针相对位置的不同, 在定义指针时根据const与指针相对位置的不同,有三 const与指针相对位置的不同 pc是 : pc所 pc是const常量 护对应实参变量不被修改 种指针: 常量,一定要初始化,但是pc 种指针const常量,一定要初始化,但是pc所 指向的内容* 指向的内容*pc不是常量允许修改 (1)指向const常量的指针,例:const int *pc; 指向const常量的指针 常量的指针, (1)指向constpc不是常量允许修改 (2)const常量指针 常量指针, pc是const常量 一定要初始化, (2)const常量指针,例:pc是const常量,一定要初始化,同叶 int a=5; 常量, pc所指向的内容 pc也允许修改 所指向的内容* int *const pc=&a; pc所指向的内容*pc也允许修改 *const 此函数中一定不能出现通过指针pa pa修改对应实 此函数中一定不能出现通过指针pa修改对应实 (3)指向const常量的const常量指针 指向const常量的const常量指针, (3)指向const常量的const常量指针,例: 参数组元素的语句, *pa=1;等 参数组元素的语句,如:pa[i]=10; *pa=1;等 int a[5]={2,4,6,8,10}; const int *const pc=a; 指针作形参时一个常见用法: 指针作形参时一个常见用法: Display(const //输出函数 void Display(const int *pa,int n); //输出函数 主调函数:int 主调函数:int a[3]={23,45,12}; Display(a,3);