c++函数、变量和头文件的使用-lesson5
作者:互联网
变量 常量 表达式
局部变量定义的时候初始化相当于两条指令—变量(定义性)声明语句和执行语句(赋值语句)
全局变量的定义的时候初始化?
函数声明(也叫函数原型)
- 函数(function–功能,以此一个函数就是一个功能)
①一个大的程序包含若干个程序模块(程序文件.cpp),每个模块实现一部分功能,c语言主要的部分是函数,所以又称做面向函数的语言;c++基于过程的设计沿用了c语言,而c++面向对象的程序设计,主函数以外的函数大多是封装在类中,主函数或者其他函数通过类对象调用类中的函数。
②函数的分类:
a)系统函数(库函数)和用户自定函数
b)无参函数和有参函数
类型名 函数名([void]) / 类型名 函数名(形式参数列表)
{
声明语句;
执行语句;
}
③函数参数、函数的返回值和函数的调用方式
a)实参和形参是通过“值传递”;
b)当函数的实际返回值(即return 值)与函数定义的返回值类型不一致时,以函数定义的返回值数据类型为准进行强制类型转换;
c)函数的调用方式:直接调用、出现在表达式中和出现在另外的函数参数中。
④函数的声明(又称函数原型)
主要的功能是在编译阶段对调用函数进行合法性进行检查,如参数的个数、类型等,提前告诉编译时调用的函数在本文件的后面或者其他程序文件中定义。
有两种形式:
函数类型 函数名(参数类型1,参数类型2…); int func(int, int);
函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2);int func(int a, int b);
⑤嵌套调用和递归调用
a)c++不允许嵌套定义,但是可以嵌套调用;
b) 递归调用:调用一个函数中又出现直接或者间接的调用函数本身,但是要注意跳出条件,否则就是一个死循环。
⑥内置函数、函数重载、函数的模板和有默认参数的函数–C++有,C没有
a)内置函数:内容替换,类似于符号常量(又称为宏)的功能,放在头文件中(为什么,自己想想宏),在函数类型前面加上inline,但是编译器会根据具体情况决定怎么做,所以就算加上inline,也要看编译器高兴替换还是作为普通函数处理。还有就是它是直接编译到代码中,会增加目标程序的长度,主要的目的是因为函数调用需要时间(保护现场,跳转和压栈),可能比函数执行的时间还要长,所以干脆直接内容替换,建议5个语句以下这么做,5个语句以上,编译器自动当作普通函数处理了;
b)函数的重载:一个函数名多用(运算符也可以),同一个功能使用相同的名字,重载函数的参数个数、参数类型或者参数顺序三者中必须至少有一个不同,函数的返回值类型可以相同或者不同,编译器根据参数的来找匹配的函数;
c)函数模板(泛型编程的一种):根据函数重载的缺点(类型不一致,需要重新定义),只要函数体不变,就可以使用函数模板(P108);
d)有默认参数的函数:如果函数的定义在函数调用之前,则应该在定义的时候给出默认值;如果在调用之后,则应该在声明的时候给出默认值,定义的时候不给默认值;声明和定义都给出默认值时,以声明为准,也就是说在函数调用之前将默认值通知编译系统。
⑦内部函数和外部函数
a)
static int func(int a)
{
函数体
}
b)
extern int func(int a)
{
函数体
}
c)函数默认是外部的,所以函数定义的时候extern可以省略,函数声明也是。 - 变量
首先分析以下内存中分配给用户使用的存储空间:
程序区 |
---|
静态存储区:外部变量、静态外部变量,静态局部变量 |
动态存储区 :函数的形参、函数中定义的自动变量 |
①从作用域角度分,有局部变量和全局变量。它们采用的存储类别如下:
局部变量 | 全局变量 |
---|---|
自动变量,即动态局部变量(离开函数,值就消失) | 外部变量(即非静态的外部变量,允许其他文件引用) |
静态局部变量(离开函数,值仍保留) | 静态外部变量(只限本文件引用) |
寄存器变量(离开函数,值就消失) | |
形式参数(可以定义为自动变量或寄存器变量) |
② 从变量值存放的位置。可分为:
内存中静态存储区 | 内存中动态存储区 | CPU 中的寄存器 |
---|---|---|
静态局部变量、静态外部变量(函数外部静态变量) 、外部变量(可为其他文件引用) | 自动变量和形式参数 | 寄存器变量 |
③从变量存储期(存在的时间)来区分,有动态存储和静态存储两种类型。静态存储是程序整个运行时间都存在,而动态存储则是在调用函数时临时分配单元。
动态存储 | 静态存储 |
---|---|
自动变量(本函数内有效) | 静态局部变量(函数内有效) |
寄存器变量(本函数内有效) | 静态外部变量(本文件内有效) |
形式参数 | 外部变量(其他文件可引用) |
- 头文件
①头文件的内容:
a)对类型的声明:包括自定义类型(结构体、联合体)和类;
b)函数的声明;
c)内置函数的定义;
d)宏定义:用#define定义的符号常量和用const声明的常变量;
e)外部变量的声明:extern int a ;
f)包含其他的头文件。
②C++标准库和头文件的形式
a)C++对标准库进行统一规范;
b)标准库的头文件不带.h;
c)c的头文件.h。
标签:存储,头文件,变量,lesson5,int,定义,c++,静态,函数 来源: https://blog.csdn.net/rushberry/article/details/115438650