我是靠谱客的博主 健康故事,最近开发中收集的这篇文章主要介绍【C++】变量和变量类型(引用、指针、typedef、auto、decltype),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

基本数据类型

C++中基本数据类型分类:

         算数类型分为整型和浮点型,在不同的机器上算数类型的尺寸有所差别。数据类型int、short、long都是带符号类型,添加unsigned就是无符号类型。而字符型分为char、signed char和unsigned char。char可表现为带符号和无符号两种形式,具体表现为哪种形式由编译器决定(数据类型是在编译阶段被检查的)。

        如果表达式里既有带符号数也有无符号数,带符号数会被转换为无符号数再计算,当带符号数取值为负数时会出现异常结果。 例如:

unsigned u = 10;

int i = -42;

std::count << i + u << std::endl;//如果int 占4字节,输出4294967264

  变量的声明和定义

        声明确定了变量的名字和类型,而定义则创建了与变量名相关的实体(申请了内存空间)。变量只能被定义一次,但是可以被多次声明。一个文件中需要使用另一个文件中定义的代码,则必须在该文件中对变量进行声明。

        如果想要声明一个变量而非定义它,就在变量 前面使用extern关键字,而且不要显示初始化。例如:

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

int j;//声明并定义   

extern int n = 3;//非声明而是定义 

(在给变量赋初值后,关键字extern就失效了,相当于定义。)

复合类型

        复合类型是指基于其他类型定义的类型。引用(左值引用)和指针就是复合类型。

引用

        引用就是给被引用对象另起一个名字,所以引用并非对象。在定义引用时就必须初始化它,将其与被引用的对象拥有同样的值(并非拷贝)。在引用定义后,不可以重新引用其他对象。

int ival = 1024;

int &refval = ival;//refval是ival的引用

        对引用进行操作就是对被引用的对象做操作。

int &refval2 = refval;//这是正确的,相当于引用的对象就是ival

int i = refval;// i 的初始化值为refval, 也就是ival的值

        被引用的只能是一个对象,而不能是字面值或者某个表达式的计算结果。因为引用本身不是对象,所以不能定义引用的引用。

指针

        与引用不同,指针本身也是一个对象。(关于指针的详细说明,可以移至主页查看关于指针写的笔记,这里就不赘述了。)

参考连接:https://blog.csdn.net/weixin_45258382/article/details/127985124

处理类型

类型别名

        类型别名就是给某种类型另起一个名字。

方法一:使用关键字 typedef

typedef double wage; //wage 是 double 的别名

typedef wage base, *p; //base 是 double 的别名,p 是 double * 的别名

方法二:使用别名声明 (使用关键字 using

using SI = Sales_item; //SI 是 Sales_item 的别名

auto类型说明符

        auto 用于在不清楚表达式的类型时,让编译器根据表达式的结果分析出其所属类型。所以,用 auto 定义变量时必须同时初始化。

//编译器根据 val1 和 val2 相加的结果推断出 item 的类型

//item 的值为 val1 和 val2 相加的结果

auto item = val1 + val2;

        例如,val1 和 val2 是 int 型,则 item 也是 int 型。利用 auto 可以在一个语句中声明多个变量,但是语句中的变量的初始基本数据类型必须相同。(一条声明语句中只能有一个基本数据类型)

auto i = 0; *p = &i; //正确,i 是整数, p 是整型指针(都是整型)

auto sz = 0, pi = 3.1; //错误,sz 是整型,pi是浮点型

decltype类型指示符

        用表达式的类型推断要定义的变量的类型,但是不使用表达式的值初始化变量(这点与auto 不同)。例如:

decltype ( f() ) sum = x;  // 函数 f 的返回类型作为 sum 的类型

最后

以上就是健康故事为你收集整理的【C++】变量和变量类型(引用、指针、typedef、auto、decltype)的全部内容,希望文章能够帮你解决【C++】变量和变量类型(引用、指针、typedef、auto、decltype)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部