《C++ Primer》 ---- 关于变量 与 基本类型

类型是所有程序的基础;

   C++ 定义了几种基本类型: 字符型(char 和 wchar_t),整型(short int long bool),浮点型(float doubel) 并且提供自定义数据类型的机制  class  struct ;;

标准库正是采用了这些机制 才定义了许多更为复杂的数据类型如: 可变长字符串 string  vector 等;

对象 就是内存中具有类型的区域;具体点说:计算左值表达式就会产生对象 ;

--------  关于初始化

初始化 分为   复制初始化  与  直接初始化

复制初始化语法使用等于(=) ,直接初始化则是把初始化式放在括号中;;

int value(1024) ; // 直接初始化

int value = 1024 ; // 复制初始化

C++ 中 “初始化 不是 赋值”  初始化是指创建变量 并且 给它 赋初始值, 而赋值是指擦除对象的当前值并用新的值代替;// 故 复制初始化实际上是两步动作,直接初始化语法更加灵活效率更高;

对于内置类型来说,赋值初始化 与 直接初始化、并没有太大的差别

但对于 类类型的对象来说,有些初始化仅能用直接初始化来完成; 定义如何进行初始化的成员函数称为 构造函数, 一个类可以定义多个构造函数,每一个构造函数必须接受不同数目或者不同类型的参数;

-------  变量初始化的规则:

1.内置类型变量的初始化

内置类型变量是否自动初始化取决与变量定义的位置;

在函数体外 定义的变量都 初始化为 0

在函数体内 定义的变量  不进行自动初始化;

2.类类型变量的初始化

使用显式的初始化式

使用默认的构造函数

不管变量在哪定义,默认函数都会被使用;有些类类型没有默认构造函数,对于这些 类型来说,每个定义都必须提供显式的初始化式; 没有初始值是根本不可能定义这种类型的变量的;

------ ---- 声明 与 定义

变量的定义用于为变量分配存储空间, 还可以为变量指定初始值,但是变量有且仅有一个定义;(定义一般伴随着  初始化式)

声明  用于向程序表明变量的类型 和 名字。定义也是一种声明   (使用extern 但是并没有 初始化式)

extern int pi = 3.1415 ;    //  定义

extern int pi ;                   // 声明 但并没有定义;

---------- const 限定符 ;

const 限定符 提供将一个变量转化为常量的办法;         // 用const 修饰 即表明 不可被修改;

默认情况:

在全局作用域里定义非const变量时,它在整个程序中都可以被访问;

全局作用域中声明的const变量 是定义该对象文件的局部变量,此变量只存在这个文件中,不能被其他文件访问

// 默认情况下   类似与 c语言 static 的作用域;

*非const 变量 默认是extern , 想要在其他文件中访问cosnt 常量  必须 显式的指定为 extern ;

------------  引用 ;

引用就是对象另一个名字;引用主要是 用作函数的形式参数  在前面添加  &符号来定义;

*** 引用 必须用与该引用同类型的对象初始化;      int val = 1025 ;      int &var = val ;     // OK

引用仅仅是名字的不同,但是指向同一个地址,同一个对象;   同数据类型的对象相互关联;

----------- typedef

用来定义类型的同义词; typedef  int  qint32 ;  // 使用qint32 来代表int数据类型;

----------- 枚举; enum

为某些属性定义一组可选择的值;

默认:第一个枚举成员 赋值为0,  后面的每一个枚举都比前面的大1;

enum stat { input , output , append   } ;   // 默认  input = 0 ; output = 1 ; append = 2  ;

//  enum stat { input =2 , output , append } ;  // 其他成员将 隐式初始化 ;

-------- struct  与 calss

class  第一个访问标识 前面 所有的成员 都是 private:

struct   第一个标识前面  都有的成员都是 public ;  // 这是 class  与  struc 唯一差别;

   

            

    

时间: 2024-10-11 18:05:05

《C++ Primer》 ---- 关于变量 与 基本类型的相关文章

C++ Primer学习总结 第1-2章 变量和基本类型

第1-2章 变量和基本类型 1.下面这个语句在C++98和C++11中的输出结果不同. C++98结果: (如果想要更高的精度,可以用%.9lf,输出9位有效数字) C++11结果: 结论: printf的%lf在C++11中表示longdouble,所以用中%f就可以输出float和double类型.而printf在C++98中可以用%lf正确输出double. 如果是scanf的话,不论C++98还是C++11中float都用%f读取,double都用%lf读取,因为二者结构不同.   2.

C++ Primer 学习笔记_5_变量和基本类型(续2)

 变量和基本类型 七.枚举 枚举不但定义了整数常量集,并且还把它们聚集成组. 枚举与简单的const常量相比孰优孰劣, 通过以下一段代码. 一看便知: [cpp] view plaincopyprint? enum {input, output, append}; const int input = 0; const int output = 1; const int append = 2; enum {input, output, append}; const int input = 0;

C++primer笔记2:变量和基本类型、字符串,向量和数组、表达式、类

第2章:变量和基本类型 char 8位 bool 未定义 short 短整型16 int 整型16 long 长整型32 long long 长整型64 C++11新定义的 float: 1个字 32位 6位有效位 double: 2个字 64位 10位有效位 long double: 10位有效位 带符号和不带符号的 unsigned 不带符号 仅仅表示大于0的 signed 带符号 大于,小于,0 基本字符集 :比特位 可寻址的最小内存块:字节 8比特 存储的基本单位 :字 32或64比特

C++ Primer 笔记(2)第二章 变量与基本类型

第二章 变量与基本类型 1.基本内置类型包括算术类型和空类型,算术类型分为两类:整型(包括字符和布尔类型)和浮点型: 2.布尔类型(bool)的取值是真(true)或者假(false): 3.字面值常量:每个字面值常量都对应一种数据类型,字面值常量的形式和值决定了它的数据类型, 由单引号括起来的一个字符是char型字面值,有双引号括起来的零个或者多个字符则构成字符串字面值: 20  整形字面值 ‘a’ 字符字面值 “Hello World”或者“”都会字符串字面值 ‘A’表示单独字符A,而“A”

C++ Primer 学习笔记_3_变量和基本类型

 变量和基本类型 引言: 1.各种程序设计语言都具有许多各具特色的特征,这些特征决定了用每种语言适合开发哪些类型的应用程序. 2.大多数现代现代程序设计语言都采用两种方式扩充语言的基本特征集:允许程序员通过自定义数据类型扩充该语言:提供一组库例程,这些例程定义了一些并非内置在语言中的实用函数和数据类型. 3.C++是静态类型语言,支持在编译时执行类型检查. 4.包括C++在内的其他语言允许程序员定义的类型不仅有数据还包含操作! 5.掌握C++的第一步就是学习语言的基本知识和标准库! 6.类型

C++ Primer 学习笔记_4_变量和基本类型(续1)

 变量和基本类型 四.const限定符 [cpp] view plaincopyprint? #include <iostream> int main() { //for循环语句存在两个问题 for (int index = 0;index != 512; ++index) { //... } return 0; } /* *1.程序的可读性:存在魔数512[魔数:他的意义在上下文中并没有体现出来,好像这个数是魔术般变出来的] *2.程序的可维护性... */ #include <i

&lt;&lt;C++ Primer&gt;&gt; 第 2 章 变量和基本类型 术语表

术语表 第 2 章 变量和基本类型 地址(address): 是一个数字,根据它可以找到内存中的一个字节 ?? 别名生命(alias declaration): 为另一种类型定义一个同义词:使用 "名字 = 类型" 的格式将名字作为该类型的同义词. ?? 算术类型(arithmetic type): 布尔值,字符,整数,浮点数等内置类型. ?? 数组(array): 是一种数据结果,存放着一组未命名的对象,可以通过索引来访问这些对象. ?? auto: 是一种类型说明符,通过变量的初始

由浅入深JavaScript——变量和原始类型

JavaScript变量 JavaScript变量标识符标识符 var + 变量名称来定义变量.变量名称以字母,下划线_,美元$符号开头,余下字符可以是字母,数字,下划线,美元符号.eg: var  name = 'hello';     var  a1 = 'hello';    var  _test = 'hello';    var  $test = 'hello';    以上变量名称均为正确.    var  1a = 'hello'; //数字开头错误.    JavaScript允

第2章 变量和基本类型

2015-10-08 20:18:32 注:  之前解除过C++比较少,只学过C语言. ----------------------------------------------------------- 内置类型是编程语言自己定义的一些类型,不需要我们自己定义了. 比如bool.int: 空类型Void  不对应具体的值,仅用于特殊的场合,例如最常见的是,当函数不反悔任何值时使用空类型作为返回值. 使用浮点数时,选用double---因为float的精度不够,且计算的时候,双精度和单精度的代

判断一个变量是数组类型的方法

在很多时候,我们都需要对一个变量进行数组类型的判断(借鉴) 学过js就应该知道typeof运算符返回字符串,该字符串代表操作数的类型(即返回数据类型)这是最常用的. 下面多种实现方式: JavaScript中检测对象的方法 1.typeof操作符 这种方法对于一些常用的类型来说那算是毫无压力,比如Function.String.Number.Undefined等,但是要是检测Array的对象就不起作用了. alert(typeof null); // "object" alert(ty