认识C++《共枚指1》
Posted 啊苏要学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了认识C++《共枚指1》相关的知识,希望对你有一定的参考价值。
目录
前言:
指针内容比较多,还需要再出一篇。久等了!!我看了我的创作记录,居然有两天没写博客,顿时就毛了,其实有点原因就是因为学校有作业,我又不想写,然后又在影响着我的心情,因为有算平时分嘛,然后一天下来,效率低的离谱,哭死。好了,话不多说,开学!
1.共用体的基本知识
共用体也叫联合体,使用关键字union。说到这个你可以联想起结构体的关键字是struct,它们都是复合类型,用关键字来创建一种类型。
共用体是什么呢?听名字,共用是共同使用一块内存空间的意思。我们这里使用struct创建了结构体,结构成员里有union创建的共用体。
假如一个共用体的成员是一个double变量和一个int变量,它们的起始地址是同一块地方。
我们需要知道的一点是,使用共用体在一定时间内只能表示一个成员。id_val有时是长整型,有时是字符数组。因为有空间是重叠的,当id_val.id_num使用整型的时候,把id_num的值改了,in_char[20]成员的值也会发生改变,从内存上看就是这样子的。
但是我们不妨可以展望一下,当我们把量子应用到计算机里的时候,能不能实现共用体成员同时存在且正常使用互不干扰呢?maybe~
2.匿名共用体
匿名共用体和匿名结构体也是非常相似的,没有了名称,也就不能用来创建相应类型的变量,除非在声明的时候就创建变量。
补充:对于底层开发多数用的是C和C++语言。什么是底层呢?请看图
3.枚举
枚举是一一列举的意思,生活中,有很多东西是可以完全列举出来的,比如性别,三原色,四大名山等等,在计算机中,使用枚举来表示,当然枚举的作用主要是用在switch语句中的case的标签入口。
枚举的关键字是enum,和结构、共用都很像,用关键字创建一个名称,这个名称可以用来创建相应类型的变量。在C语言中我们在创建枚举量如Red、Blue、Yellow的时候,不是在一行上,而是分几行,其实都可以的。需要与结构、共用区分的是,枚举在列枚举量的时候,是用逗号分隔开的,不是分号。
3.1设置枚举值
需要知道的是,后一个枚举量的值,一定是前一个枚举值+1。但是我们给前后两个枚举量都显性设值除外。
3.2枚举的应用场景
在C++早期版本,只能将int值(或提升为int的值比如char、short)赋给枚举量。但这种限制取消了,现在可以使用long甚至long long类型的值,但不能是浮点数。
3.3枚举变量的取值范围
ok,到这里,我们就讲完共用体和枚举了,重头戏来啦,认识指针。
4.地址和自由存储空间
在了解指针之前,需要了解计算机的内存相应的知识。我们知道,在存储数据的时候,需要空间把数据存起来,这些空间就是一个个内存单元,每个大小是1个字节,有地址线给内存单元编号,这个编号就是内存单元的地址,在计算机中独一无二。
我们在main函数里是先写int a;再写double b;我们看到内存编号,b的地址比a的地址低,以前我们可能会认为,谁先执行,谁先创建,放在低地址的应该是a变量,紧接的就存b变量,从这个我们可以看出:b不仅是存在低地址的,而且它们变量a和变量b还不紧邻(b的地址54,a的地址BC相差了64),在不同系统中,存法是不一样的---自由的存储空间。地址是由十六进制表示的!
5.指针的思想
指针实质上就是地址。从表面上来看 int* p_data = &data; int* 表示类型,把data变量的地址初始化给p_data指针,p_data与&data没有无异。指针变量是用来存放地址的。
补充:使用常规变量的时候,值是指定的量,int a = 5;5是a指定的值,说a就是在说5,而&a是派生量。处理指针变量的时候是相反的,int* pa = &a;pa指定的值是a的地址也就是&a,用*(解引用)对pa解引用得到的是a的值,也就是*pa等于5。
两者是相互的,a是值,&a变地址,pa是地址,*pa变值。
6.指针的声明和初始化
指针类型 | 指针类型的作用 |
int* | 决定了访问多大的空间和怎么取数值 |
int* | 在指针运算的时候,决定跳过多少个内存单元 |
简单来说就是,什么样的官,权利就是什么样的,可不敢越界了。主要与同层的人交流,每次交流的时候,差不多都是同类型的人。意即:int*只能访问四个字节的空间,加一个值的时候,就跳过一个整型的空间大小,*int访问的还是一个整型空间。
指针的内容真的很多,终于有时间更新了,虽然内容不是很多,也是博主 挤时间出来写的,
如果你觉得不错的话,可以点点赞!你的支持是我更新的动力
希望你读完有所收获!!!
c++师傅领进门,修行靠个人第一篇:认识c++
1.什么是c++
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。
为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。学过Java的小伙伴,肯定对面向对象并不陌生,是的,c++在c的基础上还有着很多Java也有的优点。
1982年,Bjarne Stroustrup博士(下图)在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。
2.c++的发展史
1979年,贝尔实验室的本贾尼等人试图分析unix内核的时候,试图将内核模块化,于是在C语言的基础上进行扩展,增加了类的机制,完成了一个可以运行的预处理程序,称之为C with classes。语言的发展就像是练功打怪升级一样,也是逐步递进,由浅入深的过程。我们先来看下C++的历史版本。
3.c++的重要性
先看今年的语言使用排行情况,稳居第4,其实c++一直以来都在前5名,可见使用的广泛度是不容小觑的。
c++可以涉及的工作领域:
- 操作系统以及大型系统软件开发
- 服务器端开发
- 人工智能
- 网络工具
- 游戏开发
- 嵌入式领域
- 数字图像处理
- 分布式应用
- 移动设备
4.如何学习c++
虽然C++语法特性繁琐复杂,经典书籍琳琅满目,建议先从b站一些入门视频开始学,边学边写代码,多思考,多总结。你可以像我一样做到:
- 写博客:记录自己的学习历程,总结自己的知识点,也能方便自己翻阅复习
- 画思维导图:形成知识框架,让自己对知识掌握更加牢固(画思维导图软件比如:xmind、imindmap等。)
- 常看书:合理的看书安排,切记贪,缓缓图之,否则容易走火入魔。
第一个层次,C++基础 (平平常常) 挑选一本入门书籍,如
《C++ Primer》、
《C++大学教程》
《C++程序设计语言》
《C++程序设计原理与实践》
《C++标准程 序库》
《The C++Standard Library Extensions》;第二个层次,正确高效的使用C++ (驾轻就熟)此层次开始必须自修,阅读过
《(More)Effective C++》、
《(More)Exceptional C++》、
《EffectiveSTL》
《C++编程规范》等,
才适宜踏入专业C++开发之路;第三个层次,深入解读C++ (出神入化)关于全局问题可读
《深入探索C++对象模型》、
《Imperfect C++》、
《C++沉思录》、
《STL源码剖析》,
要挑战智商,可看关于模版及模版元编程的书籍如
《C++ Templates》、
《C++设计新思维》、
《C++模版元编程》;
- 勤刷题
以上是关于认识C++《共枚指1》的主要内容,如果未能解决你的问题,请参考以下文章