C++_Primer学习笔记(1)

引用

引用定义的时候必须同时初始化,一旦初始化完成,引用将和初始值对象一直绑定在一起。引用无法绑定在字面值或者某个表达式的计算结果上,必须绑定对象上,且绑定的对象和声明的引用类型需严格匹配。

int value = 1024;
int &r; //错误,没有初始化
int &r = value //合法

int &r = 10 //错误
double value = 0.1
int &r = value //错误
指针

指针也是一个对象,允许对指针进行复制和拷贝,它无需在定义时初始化,如果没有初始化则拥有一个不确定的值。编译器不会检查未经初始化的指针(无效指针),所以一个良好的编程习惯是,初始化程序中出现的所有的指针,如果实在不知道指向什么,就初始化为空指针。指针的类型和指向对象的类型需严格一致。


int value = 42;
int *p = &value; //*是声明的一部分,说明p是个指针,&则是一个取地址运算

//初始化空指针
int *r = nullptr;
int *r = 0;
int *r = NULL;

在C++中,变量是对象,指针也是对象,如果一个变量有一个引用之后,那么这个引用就不是对象。不可以设置指针指向这个引用。

int value = 10;
int &r = value;
int *p;
p = r; //错误,引用不是对象,不可以设置指针指向引用。
p = &r; //正确,&r取得了value的地址,地址赋给p,合理,p指向value。

// 指向指针的引用
int i= 42;
int *p;
int *&r = p; //r 是对指针p的引用, 那么r是指针p的别名。
r = &i; //把i的地址赋给r,即赋给p。
*r = 0; 
定义类型别名
using SI = Sales_item;
auto

auto 类型表达符**可以让编译器去分析表达式的类型,一条auto的声明语句只能声明一个基本数据类型。

auto i = 0, *p = &i; //正确
auto i = 0, pi = 3.14; //错误

int j = 0, &rj = j;
const int ci = j, &cr = ci;
  
auto &m1 = ci, *cp1 = &ci; //正确,m1是整型常量的引用,cp1是指向整型常量的指针。
auto m2 = i, *cp2 = &ci; //错误,m2是整型,cp2是指向整型常量的指针。
头文件保护符

头文件保护符即使头文件还没有被包括在任何其它文件中,也应该设置保护符.防止头文件被某个文件重复包含。

#ifndef SALES_DATA_H
#define SALES_DATA_H

...

#endif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值