2.C++基础:变量和基本数据类型

换行符和回车符
  • \n表示换行符,将光标移动到下一行行首,/r表示回车符,将光标移动到本行行首。
声明与定义
  • 变量声明规定了变量的类型和名字,而定义还要申请空间,或许为变量赋初值。
  • 使用extern将变量申明和定义分开。extern int j
  • 任何显式初始化的声明都将成为定义,覆盖extern的作用。
  • 多文件使用同一个变量,就必须声明和定义分开,在一个文件定义,而在多个文件声明。
  • 变量只能被定义一次。
变量命名
  • C++标准库保留字。用户定义的标识符不能以两个下划线开头,也不能以下划线加大写字母开头,定义在函数体外的不能以下划线开头
  • 标识符要体现具体含义
  • 变量名一般使用小写
  • 用户定义的类名首字母大写。
  • 标识符有多个单词组成,中间要么使用下划线区分,要么除了第一个单词外,首字母大写。
引用
  • 引用即对象别名,并非对象,所以不能定义引用的引用
  • 引用必须显式定义初值。
指针
  • 指针本身是一个对象。
  • nullptr
  • 定义指针,写成
int *p,而不要写成 int* p;
  • 后者会让人错误的任务int的定义域。
  • 指针也是对象,因此存在对指针的引用,但引用不是对象,因而不存在指向引用的指针。
int i = 42;
int *p;
int *&r= p;//从右往左读。
r = &i;
//r是一个对指针p的引用
const 限定符
  • const默认只能在文件内有效,而想要在多文件使用,在定义的时候就要使用extern限定。
extern const int p = 1024;


//其他文件
extern const int p;

  • 常量引用,C++允许将引用绑定到const上
const int pi = 3;
const int &r1 = pi;
//valid
int &r2 = p1;
//invalid,不允许非常量引用绑定常量。

int i = 42;
const int &r3 = i;
//valid,将常量引用绑定到变量,
//不允许通过r3改变i的值,但是i可以改变其值
  • 指向常量的指针
const double pi = 3.14;
const double *p = π
//指向常量的指针指向常量

//指向常量的指针也可以指向变量
double ans = 3.1415926;
p = &ans;
*p = 3.14
//invalid,不能通过p来修改ans的值
ans = 3.14
//valid,ans的值可以改变。
  • 常量指针(const指针)
  • 把*放在const之前用于说明该指针是常量,
  • 与其他常量一样,定义的时候必须初始化。
double pi = 3.14;
double *const p = π
//p只能指向pi
*p = 24.0;
//valid
double k = 0.09;
p = &k
//invalid
  • 顶层const表示指针是一个常量,用底层const表示指向对象是一个常量。
常量表达式
  • 值不会改变且在编译阶段就能得到计算结果的表达式称为常量表达式。
const int ll = 24;//yes
cosnt int limit = ll +1;//yes
int size = limit //no
...
const int sz = size +1;//no
  • C++ 允许使用constexpr来声明变量,验证变量的值是否为常量表达式。
类型别名
  • 使用typedef
  • 使用using
typedef double d;
//d是double的别名
//等价
using d = double
auto类型说明符
  • 使用初始值来推断变量类型
  • 初始值为引用的时候,推断出来的是引用对象的类型。
  • 推断的时候一般忽略顶层const,而保留底层const。

decltype类型指示符
  • 使用decltype可以推断表达式的类型。
decltype (f()) sum = x;
decltype(...)
  • decltype处理const和引用与auto不一致。
  • 如果是引用那么返回引用类型。
  • 不会忽略顶层const
  • 如果表达式是*解引用操作,那么就会返回引用类型
  • 如果表达式使用的多层括号,那么一定返回引用,decltype((…))一定返回引用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东风中的蒟蒻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值