第十二章C与C++ 3.范围分解符 C中,当全局变量和某函数内的局部变量同名时,该 函数对全局变量起屏蔽作用,即在该函数内无法访问此全 局变量,而在C++中,只要在其前使用范围分解符即可访 问同名的全局变量。例如 float n VO Did maino fint n; ∥给局部变量n赋值 n=553;∥/给全局变量n赋值
第十二章 C与C++ 3. 范围分解符:: C中,当全局变量和某函数内的局部变量同名时, 该 函数对全局变量起屏蔽作用,即在该函数内无法访问此全 局变量,而在C++中,只要在其前使用范围分解符即可访 问同名的全局变量。 例如: float n; void main() {int n; n=5; // 给局部变量n :: n=5.53; // 给全局变量n …… }
第十二章C与C++ 4.内联函数 内联函数的特性类似于宏。 C中,在定义了宏# define abs(n)(n)<0?-(n):(n)之 后,程序每调用一次宏ABS,替换宏名的字符串就展开并 插入在调用处一次。C中的函数调用就不是这种展开方式, 而是程序转入子函数执行,执行完后再返回主调函数,每个 函数只有一段代码。在C++中,可以定义类似于宏的内联函 数,关键字是 inline,如定义求绝对值的内联函数如下: inline int Abs(int n) i return n<0-n: n;)
第十二章 C与C++ 4. 内联函数的特性类似于宏。 C中, 在定义了宏 #define ABS(n)((n)<0?-(n): (n)) 之 后, 程序每调用一次宏ABS,替换宏名的字符串就展开并 插入在调用处一次。 C中的函数调用就不是这种展开方式, 而是程序转入子函数执行,执行完后再返回主调函数,每个 函数只有一段代码。在C++中,可以定义类似于宏的内联函 数,关键字是 inline,如定义求绝对值的内联函数如下: inline int Abs(int n) { return n<0?-n: n; }
第十二章C与C++ 5.重载函数 C+中可以在同一程序中多次定义同名函数,只要各 函数间的参数个数或类型不同,例如: int Abs(int n) ireturn n<0?-n:n;) float abs( float n) i return n<0?-n:n;)
第十二章 C与C++ 5. C++中可以在同一程序中多次定义同名函数, 只要各 函数间的参数个数或类型不同, 例如: int Abs(int n) { return n<0?-n: n; } float Abs(float n) { return n<0?-n: n; }
第十二章C与C++ 在同一范围内定义同名函数称为重载函数。编译器根据函数 调用时具体的实参的个数和类型自动调用匹配的重载函数版本 例如: int Abs(int n) float Abs( float n) void maino fint i float f FAbs(5) ∥调整型的求绝对值函数 fAbs(-25); ∥调实型的求绝对值函数
第十二章 C与C++ 在同一范围内定义同名函数称为重载函数。 编译器根据函数 调用时具体的实参的个数和类型自动调用匹配的重载函数版本。 例如: int Abs(int n); float Abs(float n); void main() {int i; float f; i=Abs(5); // f=Abs(-2.5); // …… }
第十二章C与C++ 6.new和 delete操作符 以下为动态开辟内存块的例子 struct node char name node *next char "pchar ∥/定义三种类型的指针变量 It pint struct node * pnode
第十二章 C与C++ 6.new和delete操作符 以下为动态开辟内存块的例子: struct node { char *name; int salary; node *next; } char *pchar; // 定义三种类型的指针变量 int *pint; struct node *pnode;