C++了解2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/isluckyguo/article/details/50403102

1、为了支持分离式编译,C++程序将声明和定义区分开来。声明使得名字呗程序所知,一个文件如果想使用别处定义的名字则必须包含那个名字的声明。而定义负责创建与名字关联的实体。

      变量声明规定了变量的类型和名字,在这一点上定义与之相同,但是除此之外,定义还申请存储空间,也可能为变量赋一个初始值。如果想声明一个变量而非定义它,就在变量名前添加关键字extern, 而且不要显示的初始化变量

        extern int  i;      //声明i而非定义i

      任何包含了显示初始化的声明即成为定义。我们能给有extern关键字标记的变量赋一个初始值,但是这么做也就抵消了extern的作用:

         extern int  i = 4;   //定义

    注意:在函数体内部,如果试图初始化一个由extern关键字标记的变量,将引发错误。

2、C++的标识符由字母、数字和下划线组成,其中必须以字母或下划线开头。

3、复合类型是指基于其他类型定义的类型,其中两种:引用和指针。

      引用为对象起了另外一个名字。引用必须被初始化。

       int  ival = 1024;

       int  &refval ;   //报错,没有初始化

       int  &refval = ival;  //refval 指向ival,是ival的另一个名字

       为引用赋值,实际上是把值赋给了与引用绑定的对象。引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定,而且绑定时必须与绑定对象严格匹配。

4、空指针最直接的方法就是用字面值  nullptr  来初始化指针,nullptr  是一种特殊类型的字面值,他可以被转化成任意其他的指针类型。过去还会用到一个名为NULL的预处理变量来个指针赋值,这个变量在头文件 cstdlib  中定义,他的值就是 0.建议:初始化所有指针。

5、引用本身不是对象,因此不能定义指向引用的指针。但指针是对象,所以存在对指针的引用:

        int    i  =  42;

        int    *p;

        int    *&r  =  p;   // r 是一个对指针p的引用

        从右向左阅读r的定义。r 是一个引用,引用的是一个指针,而且是一个int型指针。

        

猜你喜欢

转载自blog.csdn.net/isluckyguo/article/details/50403102