C++ primer 读书笔记一

来源:互联网 发布:64码高清网络电视 手机 编辑:程序博客网 时间:2024/06/01 20:53

本文申明:作者实际工作已有一定年限。此番记录以及读书属于温故知新。


第二章 变量和基本类型


1.关于变量初始化,变量根据存储类型被分为2类,局部以及全局,全局被初始化为0,无需多说。局部变量或者说是自动变量是否会被初始化随机初始化代码实验。

#include<iostream>int main(){   int b1 = 4,b2 =5;   int v1,v2;   int a1=2,a2=3;   v2+=v1;   std::cout<<"end of sum"<<v2<<std::endl;   return 0; }                                                                      

promote:code liuchuanwu$ ./a.out 

end of sum0

    

     实验结果说明:未初始化的自动变量将会被随机复制。内存不一定是取前面定义的变量或者后面定义的变量。我猜想应该是取逻辑上的前后变量。     


2.关于局部变量与全局变量的优先级问题:当同时存在局部变量以及全局变量时,如果没有显示的(::a)说明使用全局默认使用局部。


3.关于引用

   在c中没有引用的概念,以deftype来宏定义实现。关于C++中引用,可以理解为重命名或者同名更为恰当

   

int a=1;int &b=a;b =1;//b=1,a=1

#include<iostream>int main(){   int b1 = 4;   int &a=b1;   a=1;   std::cout<<" "<<a<<" "<<b1<<std::endl;    return 0;}

promote:code liuchuanwu$ ./a.out 

 1 1


   既然是同名的概念,引用必然需要初始化,不然不知道与谁同名,且需要类型一直。

4.关于C++指针,存在以下几种状态

   (1)指向一个对象

   (2)指向对象的相邻空间

   (3)空指针

   (4)无效指针(除以上状态外的)


5.void 指针,void 指针非空指针,可以理解为空白支票可以随意填写。


6 .关于指针的指针以及指针的引用。

   指针的指针:将指针理解为一种复合变量类型。

    

int a =1;int *p = &a;int **pp = &p;
   指针的引用也是一样的

  

int a = 1;int *p = &a;int *&pp = p;

 7.const --c和C++ 都存在const 两者存在差异

   const 在C++中相当于java的final

   而在c 语言中const 是修饰的变量。存在常量指针,指针常量等概念。具体可以参考其他博客

   关于const c和c++  


8.顶层const 以及底层const

    顶层const指指针本身不可变,底层const 指所指的对象不可变

    顶层:指针本身是常量。

    底层:指针所指的对象是常量。

   <1>. 永远从右往左读一个变量声明。
<2>. const永远修饰const出现地点左边的声明类型。
<3>. 如果左边没有声明类型,就修饰右边


9.关于typedef using   

   typedef:一般用于结构体的重名

   using:声明引入命名空间的一个成员 

    

   






     


原创粉丝点击