C++ (2):变量和基本类型

变量和基本类型

转义字符:

变量初始化

当定义变量时没有指定初值,则变量被默认初始化。

  1. 如果是内置类型的变量未被显式初始化,它的值由定义的位置决定。当定义于函数之外时,变量被初始化为0,当定义在函数体内部是,变量将不被初始化,此时对其进行访问会引发错误。

  2. 绝大多数类都支持无须显式初始化而定义对象,并且提供了一个合适的默认值。

变量声明与定义

变量声明只是使得别处定义的变量使得程序所知。

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

变量命名规范

  • 标识符要体现实际含义;

  • 变量名一般用小写字母,如index;

  • 用户自定义的类名一般以大写字母开头,如Sales_item;

  • 如果标识符由多个单词组成,则单词间要有明显区分如student_loan或studentLoan。

复合类型

引用:引用为对象起了另外一个名字,引用类型引用另外一种类型。通过将声明符写成&d的形式来定义引用类型。引用必须初始化。

指针:实现了对其他对象的间接访问。

  1. 指针本身就是一个对象,允许对指针进行赋值和拷贝,且在生命周期内可以先后指向不同的对象。
  2. 指针无需在定义时赋值,若在块作用域内没初始化,也将拥有一个不确定的值。
int *ip1,*ip2;
double dp,*dp2;//dp是double型对象,dp2是指向double型对象的指针
  1. 获取对象的地址:获取地址时需使用取地址符。
int ival=42;
int *p=&ival; //p存放变量ival的地址。
  1. 指针的值(即地址)应属下列4种状态之一:
  • 指向一个对象
  • 指向紧邻对象所占空间的下一个位置
  • 空指针
  • 无效指针
  1. void* 指针:特殊的指针类型,可以存放任意对象的地址。
  2. 指针常量:指向常量的指针,const int *cptr=&pi。可以指向常量和非常量,但是不能通过该指针去修改所指变量的值。 底层const
  3. 常量指针:常量指针把自身定为常量,必须初始化,初始化后它所指向的值(即地址)就不能再改变。int *const cur = &Numb。可以通过常量指针去修改所指对象的值。 顶层const

constexpr和常量表达式

常量表达式是指:值不会改变且在编译过程中就有结果的表达式,字面值也属于表达式。但const int sz = get_size()不是常量表达式,因为sz需要在程序函数运行后才有具体的值。

在复杂的程序中比较难分辨一个初始值是否为常量表达式。在C++11的标准中规定,可以将变量声明为constexpr类型来验证变量是否为常量表达式。

处理类型

使用别名对

类型进行声明:别名声明。

1.typedef double wages;

2.using SI = Sales_item;

auto类型

auto类型让编译器去分析表达式的类型,并将变量定义为该类型。

decltype类型

decltype从表达式的类型推断出要定义的变量的类型,但是不想用该表达式的值初始化变量。

自定义数据结构

自定义类可以用关键字struct来实现。

struct 类名{
类体(数据成员,并且可以为数据成员提供类内初始值)
};

预处理器:在编译之前,可以把一些预处理功能例如:#include所指定的头文件加载到程序中。除此之外还有头文件保护符,可以根据预处理变量(已定义和未定义)来进行。

#ifndef SALES_DATA_H
#define SALES_DATA_H
#include <string>
struct Sales_Data{
    std::String bookNo;
    unsigned units_sold=0;
    double revenue=0.0;
};
#endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值