算数类型

基本类型就是int,double, long long,这一系列东西。

其中有个特殊的类型是wchar,这个符号代表本机上支持的最大的扩展字符级的字符。

(有的机器上有些扩展字符级比较大,所以需要更长的扩展字符来处理)

一般情况下,浮点数就用double就好了。

每一种字符还被分为了char和signed char,unsigned char等几种,其中signed会比unsigned少一位表示区间,一般来说是-1和0,然后向两侧蔓延。

类型转化

没什么好说的,最常见的就是越界导致的数值丢失,以及不合理的类型的赋值。需要人工去解决。

字面值常量

字面值代表赋给对手一个值,比如可以给int赋给以0打头的一个值,表示八进制,也可以给0x表示十六进制。

但要注意的是十六进制最后也是要被翻译成二进制存储的,所以最大值不能超过int的限制。

同时,‘a'代表字符,"afsd"代表一个字符串,字符串的实际存储中有一位是‘0’。

变量

变量其实是一种对象。

变量可以分为初始化和赋值两个部分。这两个步骤本身就难解难分。

只需要记住,变量通常都有自己默认的赋值变量,如果在初始化的时候指定特有的值,那也是初始化,因为这个过程中不涉及变量值的擦除。

初始化的定式其实很标准,那就是,=与数值的直接组合,=与{}包裹的数值的组合,直接在变量名后加()的组合。

变量声明与定义的关系

声明和定义可以分开的,这主要是通过extern 关键字来实现的。

这是为了解决同一个变量在众多的文件里都需要使用的问题。

标识符和作用域

标识符就其实就是起的各种名字,在不同情况下,当然有不同的规范。

作用域就是花括号外的可以用花括号外的。在花括号内的无法影响到花括号外的。

复合类型

其实复合类型很简单,包括 int &p,其中p是引用,值得是绑定到目标对象上的别名,而int *p是一个真正有存储空间的对象。

无论是指针还是引用,都可以先定义,再赋值。

如何赋值指针?

如何赋值引用?

如何解使用指针?

指向指针的指针的指针,就是一个不断在int后加*号的套娃,一层一层的套。

引用绑定一次终身绑定,但指针是可以改的。

所以就有了p = &d;

当然最骚的是这个标示符 int *&r = p, 这代表了r 是一个指针的引用,可以发现,指针是一种特殊的类型,而后才是引用符号。诀窍是,从右向左读,越靠近变量的作用越明显,int* &r,先是个引用,然后是指针。

Const

这个东西,简直是让人想死。

它的实质是在一个变量初始化之后,这个东西就不可以改了。

const如果想要在一个文件中定义,在不同的文件中引用该怎么办?

很简单,只需要在const前面加上extern就可以了。

const的特殊性在于const的指针分为指针指向的目标是常量,还是指针本身是一个常量。

一般是指向常量的指针,const int *p

但指针的常量是 int * const p,还是从右往左看,最前面的范围更大。先声明const是什么,然后是int*的类型。

有一个典型的读法:p is a point to int const. 遇到就替换成point to,遇到p,就替换成p is a.然后int * const p 就是 p is a const point to int.那就是指向int的常量指针。

constexpr和常量表达式

const是指值不会改变并且在编译过程就能得到计算结果的表达式。

两个条件,首先要const这样才能在编译过程中获得,其次要是赤裸裸的值,不能是一个函数,需要在运行时才能获得结果。

constexpr变量

这个机制是人为的指定在赋值的过程中进行编译。其实和const一样。

但是constexpr是有限制的,比如自定义的类,string等都不能被定义。并且constexpr可以定义一些简单的函数表达,这和const不同。

这个东西,可能是应用在嵌入式开发的吧,以后再熟悉。

处理类型:typedef,using

1.类型是难于拼写的,类型多了就很烦。

2.代码一长,根本搞不清楚类型是什么,需要回头寻找帮助。

(我觉得这完全不是问题啊,以我目前的开发经验,没有遇到过这种情况)

只要知道两种方法,一种是typedef,一种是using 就行。

AUTO

Auto不需要知道太多

注意auto在推断的过程中,有可能是和初始值不同。

decltype类型指示符

decltype的意思是可以自动推测表达式的类型,然后用推测出来的类型去赋值一个东西。

比如 decltype(a) b =1, 这个b就是a的类型。

自定义数据结构

其实就是struct,这个没啥说头。

唯一的要求就是希望建立struct的时候,struct分开写。

编写自己的头文件 #ifdef

我们通常把string,自定义类放在一个头文件中,然后在main函数中加上.h文件中。

这个过程中,其实是一个预处理器的处理过程,这个过程竟然是在编译之前的。

当预处理器看到# include 时,就会直接用头文件对#include进行替换。

有一个特性是头文件保护符,这个保护符其实是验证头文件中的是否成功加入到了代码中。

这个东西,为了保证唯一性,一般是和头文件的#include一起添加的。

只要无脑添加这个东西就行。

int指针初始化_C++:变量,指针,引用const,extern,using,typedef,decltype关键字相关推荐

  1. 易语言多级指针读取_C语言指针难吗?纸老虎而已,纯干货讲解(附代码)

    作者:21IC网络整理,排版:晓宇 微信公众号:芯片之家(ID:chiphome-dy) 指针对于C来说太重要.然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方 ...

  2. 指针嵌套指针 拷贝_C++智能指针小结

    C++中的智能指针包括auto_ptr, unique_ptr, shared_ptr, weak_ptr. 其中 auto_ptr已被弃用. unique_ptr unique_ptr是大部分情况下 ...

  3. c++ char数组初始化_c专题指针数组与指针的关联

    ----在今天开始写文章之前,让我不由的想起高中里面学的一篇文章中一段话语,是荀子写的<劝学>:积土成山,风雨兴焉:积水成渊,蛟龙生焉:积善成德,而神明自得,圣心备焉.故不积跬步,无以至千 ...

  4. 4 指针运算_C++用指针访问数组元素(学习笔记:第6章 08)

    用指针访问数组元素[1] 数组是一组连续存储的同类型数据,可以通过指针的算术运算,使指针依次指向数组的各个元素,进而可以遍历数组. 定义指向数组元素的指针 定义与赋值 例: int a[10], *p ...

  5. C++成员变量指针和成员函数指针

    深度探索C++对象模型这本书还有提到C++类的成员变量指针和成员函数指针,虽然在实际开发中用的不多,但是还是需要理解下. 一:成员变量指针 1.1 非静态成员指针 类成员变量指针,实际上并不是真正意义 ...

  6. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  7. 我在微信上大学:如何正确理解指针和结构体指针?

    一直觉得C语言较其他语言最伟大的地方就是C语言中的指针,有些人认为指针很简单,而有些人认为指针很难,当然这里的对简单和难并不是等价于对指针的理解程度. 为此在这里对C语言中的指针进行全面的总结,从底层 ...

  8. c语言 万能函数指针,C/C++编程笔记:C语言精华解析之void *指针,指针中的万能指针...

    什么是万能指针? 万能指针其实就是void *类型的指针,而void *指针一般被称为通用指针或叫泛指针.它是C语言关于纯粹地址的一种约定.当某个指针是void型指针时,所指向的对象不属于任何类型. ...

  9. 取消对 null 指针“l”的引用。_C++中的引用

    当变量声明为引用时,它将成为现有变量的替代名称.通过在声明中添加"&",可以将变量声明为引用. #include using namespace std; int main ...

最新文章

  1. 前途到底是网络工程还是程序设计
  2. We wear culture:Google 艺术与文化项目带你探秘穿在身上的文化
  3. protobuf + maven 爬坑记
  4. 单列多行转单行单列合并oracle_oracle中多行转单行的两种方法
  5. 一组超炫酷的动图,感受那让人窒息的数学之美!
  6. 【IOI2018】狼人【Kruscal重构树】【主席树】
  7. SpringBoot2 整合ElasticJob框架,定制化管理流程
  8. Ubuntu 14.04中修复默认启用HDMI后没有声音的问题
  9. AcWing 898. 数字三角形
  10. 大数据系统由哪些核心组件构成
  11. java 出栈_Java开发中巧妙使用链表来实现模拟栈的入栈出栈操作
  12. centos 6 安装clamav杀毒软件查毒
  13. python 生孩子朋友圈_生娃报喜朋友圈文案 孩子出生发朋友圈的话
  14. 即时聊天软件开发体会
  15. SpringMVC是什么?
  16. C# NModbus4 TCP 主从站通信样例
  17. String类的模拟实现
  18. python中leap是什么意思_您知道leap是什么意思吗?
  19. W801单片机学习笔记——调试器的配置与使用(适用于W801和W806)
  20. Kafka官方文档中文版

热门文章

  1. 可是听了半天C++五子棋
  2. 我的飞鸽传书程序,很好!!!
  3. 成员函数指针与高性能的C++委托(上篇)
  4. 如何从初级程序员变成高级程序员?赶紧看一看
  5. 逼自己玩命学了3个多月,吃透了Python技术核心!分享给你
  6. 学C语言好,还是学C++好呢?这两个专业在哪些领域用得最多?
  7. 别怕,是我......程序猿
  8. java类的实现程序_java – 如何在另一个类中实现处理程序?
  9. 如何通过控制台访问openstack实例_如何通过seo提高网站设计的访问量
  10. micropython esp32驱动舵机_PCA9685舵机控制板与MicroPython-ESP32-1Z实验室