初级C++1--面向过程

℡╲_俬逩灬. 提交于 2019-11-27 09:28:38

全局变量 global variable

    |--文件作用域 file scope

局部变量 local variable

    |--函数作用域 function scope

    |--块作用域 block scope

    |--函数原型作用域 function prototype scope


存储期 storage duration

    |--静态存储期 static storage duration    对变量分配固定的存储空间

    |--动态存储期 dynamic storage duration   对变量动态的分配存储空间


内存分配划分:   

    |--程序区      存放代码

    |--静态存储区     存放全局变量、静态变量  程序开始分配,程序结束释放

    |--动态存储区     栈 存放局部变量              函数开始分配,函数结束释放

                            堆 存放new出来的东西


存储类别 storage class

    |--自动 auto

    |--寄存器 register

    |--静态 static

    |--外部 extern


自动变量 auto variable

    auto int b,c=3; 等价于 int b,c=3;


寄存器变量

    register int i,f=1; //建议性,非强制性 了解即可


static

    |--静态局部变量 static local variable

         函数内可见,函数外隐藏,存放在静态存储区

         在函数编译时已经赋初值

    |--静态外部变量

         某些全局变量仅限于本文件使用


extern 仅用于声明

    |--在一个文件内声明全局变量

        void main()

        {

    extern int a,b;  //提前引用声明

        }

        int a=15, b=-7;  //a b 为全局变量

                         //此方法等同于把全局变量放在所有引用它的函数之前(推荐)

    |--在多文件程序中声明外部变量

        file1                     file2.cpp

        extern int a,b;       int a=3, b=4;

        让file1可以访问file2的变量


定义:需要建立存储空间 int a;

声明:不需建立存储空间 extern int a;



内部函数: 

    只能在本文件使用的函数

    staitc 类型标识符 函数名(形参列表)

外部函数:

    本文件定义函数时,在函数首部加extern(可省,默认添加)

extern int fun (int a, int b){}

    其他文件调用函数时要先声明(可省,默认添加)

        extern int fun (int a, int b);


函数声明的作用:通知编译系统,该函数在本文件中稍后定义,或在另一文件中定义。

用函数原型能够把函数的作用域扩展到定义该函数的文件之外(extern可省)

只要在使用该函数的每一个文件中包含该函数的函数原型即可


最常见的例子:#include 命令

头文件里面包含函数原型

函数定义放在函数库中或单独编译成目标文件,在连接阶段与用户文件连接组成可执行文件


预处理——编译——连接

预处理功能:

    |--宏定义

    |--文件包含

    |--条件编译

以#顶格开头,末尾不含;


宏定义:

    #define 标识符 字符串  // 已被const语句替换

        #defing PI 3.1415926

    #define 宏名(参数表) 字符串

        #define S(a,b) a*b

        S(3,2) 替换为 3*2


文件包含:

    一个源文件将另一个源文件的内容复制过来

    #include <文件名>  库函数

    #include "文件名"  用户自定义头文件,建议用.h结尾 

    #include <iostream> 到系统目录中找,如果没有则出错

    #include "C:\\tan\C++\file.c" 到指定目录寻找,再到系统目录找

    #include "file2.c" 到当前目录找,再到系统目录找


条件编译

    #ifdef 标识符        #ifndef 标识符         #if 表达式

        程序段1    程序段1                    程序段1

    #else        #else                        #else

        程序段2    程序段2                    程序段2

    #endif        #endif                      #endif


调试时的应用:

#include <iostream>

using namespace std;

#define RUN

int main()

{

    int x=1, y=2, z=3;

    #ifdef RUN

        cout << "x=" << x << "y=" << y << "z=" << z << endl;

    #endif

    cout << "x+y+z=" << x*y*z << endl;

}


内置函数/内嵌函数/内联函数 inline function

在编译时将所调用函数的代码直接嵌入到主调函数中

适用于规模小又被频繁调用的函数,内置函数中不包括循环和switch语句

inline int max(int, int, int) //函数声明

inline int max(int a, int b, int c){} //函数实现 两者之一有inline即可


函数重载 function overloading

不能出现:参数类型和个数相同,返回值不同的情况


函数模板 function template

建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟类型来表示

这个通用函数就称为模板

适用情况:函数体相同,函数参数个数相同而类型不同


template<typename T>

T max(T a, T b, T c)

{

    if (b>a)  a=b;

    if (c>a)  a=c;

    return a;

}


template<typename T>

通用函数定义

template<class T>  //可以定义多个虚拟类型

通用函数定义


变量的地址称为该变量的指针

& 取地址运算符

* 间接访问运算符(指针运算符)


int * p;  指向整型数据的指针变量

int * p[n]; 指针数组

int (*p)[n]; 指向数组的指针变量

int * p( );  返回值为指针

int (*p)( ); 函数指针 p=fun; (*p)();//调用

int **p; 指向指针的指针变量


引用 

int a;

int &b = a; //b是a的别名,属于地址传递。 必须在声明时赋值

姓童 名林 字表海川  童海川是童林的引用


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!