IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++基础整理(基本类型和变量) -> 正文阅读

[C++知识库]c++基础整理(基本类型和变量)

c++基础整理(基本类型和变量)

基本内置类型

c++中,基本的内置类型有两种:

  • 算数类型
  • 字面值常量

算数类型

算数类型分为整形浮点形两种,整形包含了大多数的类型如bool和char都是属于整形。
基本的类型有:

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

字面值类型

形如数字4,字符’a’的被称为字面值类型。字面值类型有各自对应的基本类型。

转义序列

字面值类型中有一类比较特殊的是转义序列,转移序列是不可打印的。

类型转换问题

将浮点型转换为整形时,会直接去掉小数部分。类型转换时原本的值如果超过转换的类型所能表示的最大长度时,程序会发生不可预测的问题。
如果是非0的值转换为bool型时都是true,如果是0则为false。

变量

初始化

c++初始化变量的方式有多种

int i=0;
int i(0);
int i{0};

上面的初始化的第三种方式称为列表初始化,列表初始化在发生数据精度丢失时会给出警告。

double i=0.1;
int n{i};

上面的编译无法通过。
初始时可以默认初始,默认初始化即给予默认的值,如果默认初始化发生在函数内,则不会初始化,如果使用不被初始化的值将会发生错误

声明和定义

声明的意思是告诉程序该变量存在,可以单独的声明变量不定义变量。

extern int i;//声明变量
int i;//声明并且定义变量 

如果想要在一个文件中调用另一个文件中的变量,则需要在调用的那个文件中声明要调用的变量,在原本的文件包含的头文件中也要声明该变量。

标识符

c++内置了一些标识符,定义变量的时候不能和标识符同名。

变量作用域

变量定义的时候拥有其作用域,比如在一个函数中时,其作用域就是这个函数内。
变量的的作用域可以进行嵌套,嵌套时存在外层作用域内层作用域

int i=0;//外层作用域的i
int main(){
    int i=1;//内层作用域的i
    std::cout<<i<<std::endl;//内层作用域的i 输出1
    std::cout<<::i<<std::ensl;//外层作用域的i 输出0
}

在内层作用域中,会先寻找最近作用域中变量。可以使用::来访问外层作用域的变量。

复合类型

复合类型时建立在基础类型之上的类型。

指针

指针是一种灵活且强大的数据类型,它允许直接对系统的内存进行操作,正因为可以直接对内存可以操作,所以乱用指针会造成巨大的隐患以及严重时使得系统崩溃。

指针的定义

int i=0;
int *p=nullptr;//空指针
int *m=&i;//将m指向i

在定义指针时可以让其指向空指针NULL,NULL是C语言中定义的,在c++中还提供了另一种空指针nullptr。nullptr是一种特殊的字面值常量,常常为0;
在初始化指针时可以使用&来获取变量的地址赋值给指针。
对于指针,指向的是变量,指针自己本身表示的是所指的变量的地址。可以通过解引用来访问所指向的地址。

int i=0;
int *m=&i;
*m=1;//对指针解引用 i的值变为1

引用

引用相当于变量的别名,可以通过引用来修改变量。

引用的定义

int i=0;
int &m=i;//对i进行引用

引用有点类似于指针,但是却又不同于指针。指针是存储地址,通过地址来访问所指向的变量。引用则是变量的别名,直接可以访问变量来修改变量。

  • 引用在定义时必须要指明所引用的变量。

const类型修饰符

const用于修饰那些不会改变的变量。试图对const修饰过的变量进行修改时编译器会报错。

const和引用

const引用会使得不能通过当前的别名修改变量,const引用可以引用非const变量。

const int n=0;
const int &q=n;
int i=0;
const int &m=i;

const引用可以绑定非本类型的变量,在绑定时编译器会隐式声明一个和引用类型一样的临时两来使绑定正常。

double i=1.1;
const int &m=i;

上面段代码会转换成:

double i=1.1;
const int temp=i;//临时两temp
const int &m=temp;

const和指针

指针本身表示了变量地址,也能表示所指向的变量,所以指针的const有两层含义,第一层含义是指针本身不可变,另一层是所指向的变量不可变。

int i=0;
const int *p=&i;//所指向的变量的值不能改变,即不能通过指针更改变量
int * const cp=&i;//指针本身是const,不能改变指针本身的指向
const int *const ccp=&i;//不能更改指向且不能更改所指向的变量的值

const指针也可以指向非常量的变量,这一点和引用一样。

顶层const和底层const

对于指针,存在顶层const和底层const。广泛的,顶层const表示本身不可变,底层const表示所指向的内容不可变。

const int i=0;//顶层const
const int *pi=&i;//底层const
int *const tpi=&i;//底层const
const int *const ccp=&i;//既是顶层又是底层const

有一点不同的是,用于引用的const都是底层const。

constexpr

c++中有常量表达式的概念,常量表达式即在编译的过程中就可以确定固定的值,不同于const,const的值可能在运行时才会决定是多少。
常量表达式可以用constexpr来声明,编译器会检查是否可以在编译期间获得具体值。
指针如果要是constexpr类型,则必须初始化为nullptr类型。

处理类型

有时候我们不知道我们所要定义的类型时,可以通过一些关键字来自动获取。

auto

auto会自动的获取当前变量的类型来定义变量。
auto在推断变量类型时,一般会忽略掉顶层const,保留底层const;

const int i=0;
auto in=i;//in为const int
auto ip=&i;//ip为const int *

decltype

decltype通过判断类型来定义变量,不同的一点是,decltype可以判断函数的返回值来定义变量

int a=0,b=1;
decltype(a+b) i;//判断a+b的类型
decltype(string::size()) strl;//size_t类型

如果对括号内的处理内容再加上一层括号的话,就会转成引用类型。

int a=0,b=1;
decltype((a+b)) i=&a;//i为int &类型
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-30 12:34:13  更:2021-07-30 12:34:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 1:02:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码