C++ 声明和定义(二)

       在不同的时段看同样的书籍会有不同的感受,思维层次不一样。并且有些你可能很肯定的东西,形成思维定式的东西,当你遇到不同见解的时候,千万别急着下结论,认为你掌握的肯定就是对的。之前你很可能对某些东西理解未透彻或者忽略掉了一些事实,举个简单的例子:对表达式sizeof(int)求值得到4,也就是说int占4个字节,那么int占32bits。这样一定是对着的吗?答案是不一定,int确实占4字节,是不是32bits这就两说,具体原因在此文中不会提及,会在下一篇关于sizeof关键字以及C++的climits库时来具体分析解释,如果有好奇宝宝在的话,先自行查阅CHAR_BIT这个符号常量去吧。从此篇文章开始作为我C++拾遗的开始(2018-6-3 mark)。

       关于声明和定义:

  •         声明和定义语句的实质性区别在于:这条语句的执行是否会为变量分配内存空间,如果分配的话,那么就是定义。有的书本中,比如<<C++ Primer Plus>>将声明分成两种,一种叫引用声明(reference declaration),其实就是C++ 声明和定义(一)中提到单纯的声明语句,变量前面加extern的那位;另外一种叫定义声明(defining declaration),  其实就是下面这个简单的例子,既是变量的声明同时又是定义。
  •         简单的例子: int var = 8; 这个简单的语句相信大家都写过成千上万遍了,觉得毫无稀奇之处。但是很多东西都是细微处见真章。具体说来这条语句包含的信息量是很大的。1. 这条语句告知了系统这儿我定义了一个变量,变量名叫var,通过var这个符号,我可以找到并访问这个变量的首地址,对这个内存地址进行存取操作,也即说明var这个符号与变量实际内存地址建立了映射关系(当然我是指这条语句被执行之后,而并非开发源代码的阶段);2. 变量的类型为C/C++内置整型int,编译器知道int在当前系统是占多少bits(关于int的长度,一般是目标计算机而言最为自然的长度,自然长度natural size是指计算机处理起来效率最高的长度,也即cpu寄存器位宽),因此会为这个变量分配相应大小的内存空间,并且有数据写入这个地址空间的时候,应该以怎样的方式去写这个内存空间的每个bit;3. 数值8告知系统,分配好地址后,往这个地址空间存入8这个值,并且这个地址是int类型,存入8 的时候,你可别按别的类型存入,如果你按字符或者其他类型存入,那编译器你就太傻逼了。

      

猜你喜欢

转载自blog.csdn.net/ice_ly000/article/details/80552707