![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++深入
自学c++ primer plus的分享
HWQlet
这个作者很懒,什么都没留下…
展开
-
C++数据存储问题以及一些扩展
栈:用来保存局部变量,作用域结束的时候自动回收(汇编中通过保存栈顶指针,结束的时候直接将栈针赋值成栈顶指针) 堆:保存new分配的内存,或者malloc,alloc分配的,需要程序员手动释放,delete或者free,当然,实在忘记了,整个程序文件结束时,操作系统会将之回收,操作系统有个功能可是内存管理 全局/静态存储区:全局变量和static后的变量存储的地方。static之后的有全局静态变量和局部静态变量,static修改标识符的链接属性,由默认的external变为internal。局部静态变量如原创 2020-05-18 19:02:14 · 262 阅读 · 0 评论 -
C++--向上转换和向下转换
向上转换和向下转换:都是指针或者引用的转换,不是普通对象的转换向上转换:子类向基类的转换,比如,derived_class d ;base_class *b = derived_class &d;向下转换:安全性没有保障,基类向子类转换,比如,base_class b; derived_class *d = (derived_class*) &b;我们会发现,向下转换的时候需要进行类型转化,因为&b只知道了实例b的地址和内部构造(这是base_class的构造),与d..原创 2020-05-18 18:35:16 · 1874 阅读 · 0 评论 -
野指针,空指针,悬空指针,智能指针
野指针野指针就是未进行初始化的指针,你不知道这个指针变量里面的内容是什么,一般是最近一次这块内存上面的内容,也就是说不知道用这个指针访问的内存是哪一块,所以指针初始化的时候要typename * p = nullptr;悬空指针悬空指针就是将这个指针指向的内存已经释放了,却没有对指针进行赋空,因为C++并没有垃圾回收机制,你delete了一个指针只是释放了指针指向的内存空间,而指针本身...原创 2020-05-03 22:23:26 · 879 阅读 · 0 评论 -
C++中的常量引用
有指针常量和常量指针那么有没有引用常量和常量引用呢?答案是,没有引用常量引用有常量引用和普通引用。要区分常量和常量引用的区别<引用作为形参时,形参的地址其实就是对应实参的地址;但是如果形参为常数时,则会为形参重新分配空间>常量引用的定义方式:int b;const int &a =b;或者int b;int const &a=b;对引用来说,...原创 2020-05-01 22:14:06 · 1083 阅读 · 0 评论 -
C++中void*
我们都知道指针就是一个指针变量,里面存的是某个内存块的地址,指针的类型就是为了确定这个地址之后的一段区域指针变量和指向的区域不在同一个地方void并没有指定的大小,void a;这种定义肯定是会出错的 void属于一种未确定类型的过渡行数据,如果要用void*访问实际的一块内存(地址,大小),需要进行强制转换 void*指针只支持几种有限的操作:与另一个指针进行比较;向函数传递void...原创 2020-04-29 15:15:57 · 436 阅读 · 0 评论 -
C++中怎么读懂复杂的类型声明
这是我从学长那学到的:他的网站链接int **ptr,这个大家应该都能够知道什么意思:ptr是指向(int类型指针)的指针,可以用于创建二维数组但是看看这个:int *(*(**foo[][5])())[];是不是看着都头疼,对于这种代码,需要有方法去读懂它。C++中类型声明都有basic Type(基本类型)和derived Type(派生类型)Basic Type(基...原创 2020-04-19 09:04:33 · 569 阅读 · 0 评论 -
C/C++中的指针(*),引用(&),取地址(&)
大一学C++的时候最怕的肯定就是指针方面的知识了,相信大家也是有这样的体会,但是懵归懵,现在我们得弄清楚一下里面的东西,但想要理解的明明白白,还是需要下一些功夫进去的指针的形象概念:假设第一个代表指针变量ptr,第二个代表整形变量h第一个方框就是指针变量,指针变量存的内容是指向的变量的地址,所以我们会有如下指针: int * ptr=&a;然后我们使用的时候,*ptr...原创 2019-12-31 15:38:59 · 970 阅读 · 0 评论 -
C/C++中 typedef 的深入理解
大二的时候学数据结构总是用到typedef这个关键字,似乎都很熟练,但是,真的就理解了typedef真正的含义了吗C++/C是真的博大精深!!!!!!先把typedef的用法都列出来,看看我们是不是都理解:typedef int BOOL; //就是简单的将int类型去一个别名BOOL//然后我们可以用BOOL来定义一个整型变量:BOOL a = 13;ty...原创 2019-12-25 22:09:00 · 838 阅读 · 0 评论 -
C++中的输入输出,cin,cout以及一些拓展
写这个内容的博客是因为参加大学生程序设计大赛的时候,经常需要用到一些格式化输出的知识,当时真的学的贼烦,怎么一个输出格式化还要背似的C++中把输入输出当作字节流cin:常见用法我就不一一赘述了,主要讲一下cin的实现机制,我们系统中有三个常量,std_in,std_out,std_err这些分别是标准输入流,标准输出流,标准错误输出流。cin对象对应的就是标准输入流,这个流被关联...原创 2019-12-24 12:50:08 · 447 阅读 · 0 评论 -
c++中的const修饰符和C中的static的区别
c++分栏的博客很多都是我原来大一的时候搞混的知识经过从新学习或者新掌握的,如果有什么不对欢迎大家指正相信大家都有自己学过其他编程语言,比如java,所以自然对static是有一定了解的。在java中static表示的是静态的意思比如程序的入口就是static void main(int args[])。但是在c语言中static则有意想不到的含义,static表示的是当前文件私有的意思,...原创 2019-12-21 21:53:22 · 198 阅读 · 0 评论 -
c中字符串和字符数组的区别
记得大一在学习c++的时候,讲字符串的时候感觉听的还行,但老师讲到和c中字符串的区别的时候就懵逼了。~~~C++中:字符串可以通过#include <string>来直接定义字符串,给我们带来很大的方便,比如我们可以直接 string str1=“jflkasjh”;C可以认为是C++的子集,就是C中有的,C++都可以通过#include <libname>来包...原创 2019-12-19 13:54:43 · 532 阅读 · 0 评论