zoukankan      html  css  js  c++  java
  • C++之整理一些最近看书的收获

    1  short 只能修饰 int 。

    2  long 只能修饰 int 和 double (以及 long ,比如 long long a ; 是 long long int a; 的简写) 。

    3  char 和 int 型数可以分别用 unsigned 和 signed 来修饰,表示带符号和不带符号。

    4  实型数( float 和 double )一定是带符号的,不能用 unsigned 或 signed 来修饰。

    5  空值类型 void :

      5.1  把 void 说成空值类型并不十分恰当。当 void 作为函数的返回类型时,表明该函数不需要任何类型的返回值。

      5.2  程序运行时,可以动态地申请内存。指向该内存块的指针是 void 指针类型。 void 类型指针可以转换为其他类型指针。

    6  #define PI 3.14159265  // 这种定义常量的方法有缺点,因为编译系统不能对常量的数据类型进行检查

    7  sizeof()是运算符,不是函数,在用表达式初始化一个常量时(常量在编译时就能求值,用const定义也是一样),表达式中不能含有某个函数,也不能含有某个变量,但是可以用sizeof()。

    8  一个实型常量如果不另作说明,其隐含类型是 double 型,添加后缀便改变其类型。例如:

      123.45——无后缀,默认为 double 型,有效位为15。

      123.45F——添加后缀(大写字母 F ),此数改为 float 型,有效位为7。

      123.45f——添加后缀(小写字母 f ),此数改为 float 型,有效位为7。

      123.45L——添加后缀(大写字母 L ),此数改为 long double 型,有效位为19。

      123.45l——添加后缀(小写字母 l ),此数改为 long double 型,有效位为19。

    9  假设 a 为 float 型变量。 a = 2.45678 * 4523.65 ,即:以 a 来获取 2.45678 与 4523.65 的乘积。

      这里,float 型变量 a 的有效数字为 7 位,用户对这个精度已经满意。但系统却将 2.45678 和 4523.65 这两个数作为双精度数来处理,因此运算速度降低,而结果却的有效位数仍取决于 a 的类型。为了提高运算速度,可为这两个数添加后缀 F 或 f ,即赋值语句改为:

       a = 2.45678F * 4523.65f  ,这样,编译系统便把这两个操作数视为单精度数来进行计算,结果被赋给 a 而有效的数字仍为 7 位。

    10  变量的作用域与可见性

      10.1  变量的有效范围称为作用域( Scope )。

      10.2  可见性( Visualization )指的是变量在某个范围内能否被访问。

      10.3  在变量作用域之外,该变量不可见。但在作用域内,如果先定义一个变量,在其后的一个子域内,又定义一个同名变量,则在该子域内,后者“屏蔽”了前者。换句话说,前一个变量的作用域覆盖其中的子域,但它在子与中是不直接可见的

      10.4  定义于程序块(由花括号 “ { ” 和 “ } ” 括起来的语句序列)内的变量称为局部变量,它的适用范围开始于定义点,终止于本程序块的末尾。这个有效范围称为作用域。 

    1 {                        // 块A开始
    2 float a,b; // a和b是块A内的局部变量,作用域起始于这一点
    3
    4 for(int i=0;i<10;i++) // i是块A的局部变量,作用域始于这一点
    5 { // 块B开始
    6 int j=0; // j是块B内的局部变量,作用域是块B
    7 } // 块B结束
    8
    9 } // 块A结束,变量a,b,i 作用域终止于此

      10.5  内块的变量屏蔽了块外的同名变量,并不意味着内块不能访问外块的同名变量。在内块中,同名变量之前加了辨识符“ :: ” ,则所访问的是外块的那个变量。

     1 {                               //A开始
    2 int i = 10;
    3 { //B开始
    4 int i = 7;
    5 cout << i << endl; // 显示块B的i(i=7)
    6 { //C开始
    7 int i = 5;
    8 cout << i << endl; // 显示块C的i(i=5)
    9 cout << ::i <<endl; // 显示块B的i(i=7)
    10 } //C结束
    11 cout << ::i <<endl; // 显示块A的i(i=10)
    12 } //B结束
    13 cout << i << endl; // 显示块A的i(i=10)
    14 } //A结束

      10.6  定义于函数之外的变量称为全局变量。外部变量就是全局变量,其作用域起始于定义点,终止于本源文件的末尾。

      10.7  为了扩大作用域,在定义点之前引用某外部变量,就必须在引用前,用关键字 extern 先声明该外部变量。其定义可以放在引用点之后。

      10.8  在多文件的程序中,如果一个文件已经定义了某个外部变量,则另一个文件可以用关键字 extern 引用该变量。注意:如果两个文件同时定义某个外部变量,则在进行程序的连接时会出现“重复定义”的错误。

      10.9  一般来说,把建立存储空间的说明称为定义( int a; // 定义性声明,要为 a 分配内存空间),而把不需要建立存储空间的说明称为声明( extern b; // 引用性声明,在别处分配内存空间)。

      10.10  外部变量定义与外部变量声明不同。外部变量定义只有一次,其位置必须在所有函数之外,而在同一文件中,外部变量可以多次声明,既可以在函数之外(在定义点之前),也可以在各函数之内。

      10.11  用 static 声明外部变量为静态全局变量,可限制外部变量的作用域,使它只能在本文件内被引用。

    11  嵌入指令也可以指定带路径的文件名,例如

    1 #include "E:\P\File1.cpp"
  • 相关阅读:
    Linux学习32
    Linux学习31-如何查看 linux 系统是centos还是ubuntu,并查看系统版本号
    python测试开发django-124.bootstrap点删除按钮弹确认删除
    python测试开发django-123.bootstrap模态框(modal)垂直居中显示
    python测试开发django-122.bootstrap模态框(modal)学习
    Linux下查询tomcat进程命令
    linux服务器通过X11实现图形化界面显示 1 背景描述
    linux(centos)配置ipv6网卡
    linux 下给网卡添加ipv6、路由
    2021年最新大厂php+go面试题集(1)
  • 原文地址:https://www.cnblogs.com/cybersword/p/Cpp_CyberSword.html
Copyright © 2011-2022 走看看