【Primer C++】第二章:变量和基本类型

使用列表初始化初始化内置类型时,若存在丢失信息的风险,编译器将会报错:

long double ld = 3.1415926536;

int b = { ld };

默认初始化

变量的默认值与变量类型和变量所处的位置有关,

  • 定义于任何函数之外的变量被初始化为0;
  • 定义在函数体内部的内置类型变量将不被初始化

变量的声明和定义

变量的声明:

extern int i;

变量的声明则是:在变量名前面添加关键字extern并且不能显示地初始化变量;并且在函数体内部,不能初始化由extern关键字标记的变量

当为变量赋初始值时:

extern double pi = 3.1416; //将会抵消extern的作用,从而转变为定义

int j; //声明并定义

名字的作用域

int reused = 42;

int main()
{
	int reused = 1;

	std::cout << reused << std::endl;

	std::cout << ::reused << std::endl;	// 全局作用域本身没有名字,当操作符的左侧为空时,将会向全局作用域请求获取变量的值

}

复合类型

引用(左值引用)

引用并非对象。

在初始化变量时,初始值会被拷贝到新建的对象中;定义引用时,程序把引用和它的初始值绑定,而非拷贝。一旦初始化完成,将会和它的初始值对象一直绑定在一起。因此无法令引用重新绑定到另外一个对象,因此引用必须初始化。

int &ai = 10; //错误
const int &ab = 10; //正确
指针

指针本身就是一个对象。

设置为空指针:
int *p1 = nullptr;
int *p2 = 0;
// 需要首先包含#include cstdlib
int *p3 = NULL; // NULL为预处理变量

void*指针:可存放任意对象的地址

指向指针的引用:

int i = 42;
int *p;
int *&r = p;

要理解r的类型到底是什么,简单的方法时从右向左阅读r的定义:距离变量名最近的符号对变量的类型具有最直接的影响,因此r是一个引用,声明符的其余部分确定r引用的类型。

自定义数据结构

struct Sales_data {/*......*/} accm, trans, *salesptr; //最后的分号不要忘记

C++11新标准规定,可以为数据成员提供一个类内初始值,创建对象时,类内初始值用于初始化数据成员。

预处理功能(头文件保护符)

#ifndef XXX
#define XXX
 ......
#endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值