C++ 语法--变量和常量

起步

Hello world!

1 #include <iostream>
2 
3 int main()
4 {
5     std::cout<<"Hello, world!";
6     return 0;
7 }

基本输入和输出对象

cin        标准输入

cout      标准输出

cerr       标准错误

clog       标准日志

 

注释

//单行注释

/*

   多行注释(不能嵌套)         

*/

 

内置基本类型

bool 布尔类型
short 短整型
int 整型
long 长整型
long long 长整型
float 单精度浮点数
double 双精度浮点数
long double 扩展精度浮点数
char 字符
wchar_t 宽字符
char16_t Unicode字符
char32_t Unicode字符

 

整形:包括整形,布尔类型,字符类型

浮点数:浮点类型

整形分为 带符号signed 和 无符号 unsigned

带符号:表示正数,0,负数

无符号:表示0和正数(也就是没有负号)

 

字面值常量

12      //十进制
014    //八进制
0xc     //十六进制
/*
   十进制数照常写
   八进制数以0开头
   十六进制数以0x或0X开头   
*/


//浮点型

//小数
3.141592654

//科学计数法
3.1415E0

//字符和字符串字面值

//字符
'a'

//字符串
"Hello world!"

转义序列

换行符          \n

横向制表符     \t

纵向制表符     \v

反斜线           \\

回车符           \r

退格符           \b

问号              \?

进纸符           \f

响铃符           \a

双引号            \"

单引号            \'

 

字面值类型指示

 

前缀 含义 类型
u Unicode16字符 char16_t
U Unicode32字符 char32_t
L 宽字符 wchar_t
u8 UTF-8 char

 

布尔类型字面值   true      false

 

变量:命名的,可以改变其值的(可读,可修改),可供程序操作的储存空间。

变量定义基本形式:

类型说明符 变量名;

例子:int i;

初始化

int i;           //定义(没有初始化)
int a = 0;   //定义并初始化

a = 0;       //赋值

//列表初始化
int s = {0};
int s{0};
int s(0);

声明:声明定义存在

定义:声明并创建对象实体

extern int i;   //声明而不是定义
int j;              //声明并定义

extern double pi = 3.1415;
//定义。初始化抵消extern作用


//变量只能定义一次,可以被多次声明

标识符

由字母,数字,下划线组成,必须以字母或下划线开头。不限制长度,对大小写敏感

 

作用域

变量的有效使用区域,开始于声明语句,结束于声明所在的作用域末端,大多数以大括号分隔。

全局作用域:所有作用域的根,任意大括号定义的作用域之外,通常为整个文件。

块作用域:语句块形成的作用域

外层作用域隐藏内层作用域的名字

允许内层作用域重新定义外层作用域已有的名字

 

 

复合类型

定义方式:

基本数据类型 声明符列表

例如:

int *p1, *p2;

int属于基本数据类型      *p1  *p2属于声明符    , 属于分隔符       其中  * 是指针符号,属于复合类型说明符       p1   p2属于标识符        ;为语句结束标志

 

引用(左值引用)

形式:   基本数据类型 &标识符;

&为引用的复合类型说明符

例如:int &r1 = i1, &r2 = i2;

引用只是别名,不创建实体,引用必须初始化,用非引用变量初始化。

 

指针

指针指向一个对象,两者基本数据类型必须相同。指针是实体,可以不初始化,会有一个不确定的值。

形式:基本数据类型 *标识符;

*为指针的复合类型说明符

例如:int *p1, *p2;

 

获取对象地址,即给指针赋值或使指针指向对象

使用取地址符& 形式: &变量名(这里的取地址符与引用的复合类型说明符符号相同,但是代表不同的意思。在声明语句内表示引用,在赋值语句内表示取地址符)

例如: int *pi = &ival;

基本数据类型应该对应

 

指针值:

1.指向一个对象

2.指向相邻对象所占空间的下一个位置

3.空指针,没有指向任何对象

4.无效指针,上述情况之外,指向无效地址,也叫垂悬指针或野指针。

 

访问指针所指的对象

使用解引用符* (多个意思么,不解释了)

int *pi = &ival;

cout << *pi;

int i;

i = *pi;

 

空指针

//空指针的多种创建方式
//可以初始化为空指针
//也可以赋值变为空指针

//使用空指针字面值
int *p1 = nullptr;

//使用字面值常量0(为0的变量不可以)
int *p2 = 0;

//使用宏NULL
int *p3 = NULL;
//不过NULL就是0
#define NULL 0

 

void* 指针,存放任意地址,无视基本数据类型

 

指向指针的指针

指针的级数由*的个数决定。

一级指针(最低级的指针*)指向非指针对象。大于一级的指针指向相邻的下一级指针。如***指向**,**指向*,*指向非指针对象。

//对象
int ival = 0;

//一级指针
int *pi = &ival;

//二级指针
int **ppi = &pi;

//三级指针
int ***pppi = &ppi;

多级指针需要解引用多次。

int use = 0;

use = ***pppi;
use = **ppi;
use = *pi;

 

常量

const限定符

可以初始化和读取,不可以赋值。

加在声明符之前。

const int ci = 0;

仅在文件内有效。

posted @ 2016-01-22 15:45  literalkernel  阅读(986)  评论(0编辑  收藏  举报