C++基础

C++基础

C++对C语言的扩充

  1. 注释行

  2. cout和cin

    cout的使用:
    1. 以不同进制输出:

      如:cout << oct << i<< end

    2. 设置宽度,等

      函数名称
      oct八进制
      hex十六进制
      dec十进制
      setbase()表示n进制,包含在中,n取8,10,16
      setprecision(n)设置浮点数输出的有效位数(四舍五入)
      setiosflags(ios::left)左对齐
      setw()输出总的宽度
      setfill(’*’)设置填充字符
  3. 灵活的变量声明:C++可以在任何地方声明局部变量,从声明处开始到该变量所在的最小分程序末有效

  4. 结构,联合,枚举:声明变量时,不必添加 struct,union,enum

  5. 函数原型:

    • 函数原型可以不写出参数,但要保留类型 如:long fun(int,int)
    • 函数定义由首部和函数体构成,函数首部末尾不加封号,参数必须给出名字
    • 标准c++,mian()函数,必须声明为int类型,且不用函数原型声明。
    • c++中,函数参数为空表示函数不带任何参数:如fun()和fun(void)
  6. const

    const与#define比较:

    • const能够明确指定类型

    • 可以定义在特点的函数或文件中

    • 更加适合复制的类型

      const修饰符

    • 指向常量的指针:const char * pc:指针指向的值不可改,地址可以改。

    • 常量指针:char * const pc :指针指向的值可以改,地址不可以改。

    • 指向常量的常指针:const char *const pc:值和地址都不可以该。

    • 如果const修饰的是常量,那么int可以省略。如:const int a=200 等价于 const a=200;

    • const也可以用于修饰函数参数,保证实参不在函数内被改变

    • const的值可以被改变:

     int a=5;
    	 const int& b = a;
    	 a = 10;
    	 cout << a << b << endl;
    

    这里,b的值改变成了10;

  7. void类型指针:可以定义void类型指针,不能定义void类型变量。void型指针是通用型指针,它可以接受任何类型指针的赋值,但是对它进行输出或传递指针值时,必须使用显式类型转换,否者会出差。

  8. 内联函数:C++编译器将函数代码插入到调用函数处,同时用形参代替实参数,以便在程序运行时不在进行函数调用。

    ​ 内联函数的好处就是,当函数体本身不复杂时,调用函数所花费的时间会比实现函数功能的时间大。内联函数可以实现,不调用函数而直接进入函数体,**降低了调用时间的系统开销,提高了运行速度。**宏也可以代替一个函数,但是宏只是做简单的字符替换而没有做语法检查。如下:

    #define Fun(x) x*2 
    Fun(1+2)=5
    
  9. 带有默认参数值的函数:形参数个数可以与实参个数不同。方法是,在定义形参时给出一个或多个默认的实参。

    ​ 编译器从左到右将实参与形参结合,若遇到未指定的实参,则编译器安顺序从函数原型中的默认值不足缺少的实参。

    ​ 需要注意的是:

    1. 所有取默认值的参数必须取在非默认值参数的左边。
    2. 若某个参数省略则后边的参数都应该有默认值,不运行某个参数省略后,后边继续
  10. 函数重载:在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。

    int fun(int a, int b) 
    {
    	return a + b;
    }
    
    double fun(double a, double b)
    {
    	return a + b;
    }
    int main()
    {
        cout << fun(5, 5)<<endl;
    	cout << fun(5.5, 5.5);
    	return 0;
    }
    
    //函数重载与带默认值的函数:
    //二义性:系统不知道选哪个,不合法
    void fun(int a, int b=5);
    void fun(int a);
    fun(3);
    
    //下面是个法的:
      void fun(int a,int b,int c=3);
      void fun(int a);
    fun(1,2)
    
  11. 作用域标识符“::”

    • 如果两个同名的变量,一个是全局的,一个是局部的,那么局部变量在其作用域内具有较高的优先权。
    • 如果希望在局部变量作用域内访问同名的全局变量,则可以再该变量前加::作用标识符
  12. 强制类型转换

    C语言支持(double)x格式的强制类型转换,C++也支持。但C++提供了一种更加方便的,类似于调用函数的格式:double(x);

  13. new和delete运算符

    • new和delete比malloc和free(),性能更加优越,使用更方便灵活。

    • new用于内存分配的最基本形式为:

      指针变量名称=new 类型

    • 为数组动态申请空间:

      ​ 指针变量名称=new 类型[下标表达式]

      ​ 为多维数组申请空间时,必须提供所有维的大小,其中第一维可以是任何表达式。

    • 为普通变量申请空间时,可以对其初始化

      ​ 指针变量名称=new类型(初值)

    new和delete的优点:

    • 自动计算所要分配内存类型大小
    • new能够自动返回正确的指针类型
    • 若new申请空间失败则返回空指针
  14. 引用:引用和其所代表的变量共享同一块存储空间;

    • ​ 格式:&(别名)=变量

    • 和const一样,在声明引用时,必须初始化。

    • 引用的初始值可以是一个变量或另一个引用

    • 指针是通过地址访问变量,而引用是通过别名直接访问某个变量

    • 被初始化后,不能在被重新声明为另一个变量的引用

  15. 引用做函数参数:

    普通参数传递是单向的,而已指针变量和引用做参数时传递是双向的,既参数和实参共用同一块存储空间。

    如:void fun(&a,&b);

  16. 使用引用返回函数值:

    int& fun(),除了将函数定义为返回一个引用外,通常函数不出现在等号左边。

  17. 对引用的进一步说明

  • 不能建立void型引用
  • 不能建立引用的数组,如:&ra[4]=a;
  • 不能建立引用的引用,如&&r=a;
  • 可以用const限定,不允许改变引用的值。
  • &只是在定义时为引用,之后为普通的取地址符号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值