![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
C C++学习笔记
Nod_Mouse
这个作者很懒,什么都没留下…
展开
-
c语言存储区-堆栈静态存储区
栈由编译器自动分配释放,其中存放在主调函数中被调用函数的下一句代码、函数参数和局部变量,容量有限堆由程序员自己分配释放(用malloc和free,或new和delete) ,如果我们不手动释放,那就要到程序结束才释放。如果对分配的空间在不用的时候不释放而一味的分配,那么可能会引起内存泄漏,其容量取决于虚拟内存,较大。静态存储区{由在编译时由编译器分配,由系统释放,其中存放的是全局变量、static变量和常量.程序代码区存放函数体的二进制代码数据段1.只读数据段:是程序使用的一些不会被修改原创 2021-03-11 10:43:23 · 335 阅读 · 0 评论 -
对printf源码的分析
对printf源码的分析一、printf的源码如下#include <stdio.h>#include <stdarg.h> //va_start(arg,format),初始化参数指针arg,将函数参数format右边第一个参数地址赋值给arg//format必须是一个参数的指针,所以,此种类型函数至少要有一个普通的参数, //从而提供给va_start ,这样va_start才能找到可变参数在栈上的位置。 //va_arg(arg,char),获得arg指向参原创 2021-03-11 10:42:08 · 4410 阅读 · 1 评论 -
运算符重载
运算符重载operatorOP(argument-list) 是运算符重载的方法,例如operator+()重载+,op必须是已经存在的运算符OP是[]的话,将重载[]运算符而且可以对t1=t2+t3+t4这种方式的进行重载。运算符重载的限制1.重载之后的运算符必须至少有一个操作数是用户定义的类型,这样可以防止用户修改标准类型重载运算符,所以你不能将两个int相加重载成两个int相减少。2.使用操作符时不能违反原来的句法规则,比如不可以使用%va这种3.不能使用不存在的运算符,不能修改运算符的原创 2021-03-11 10:40:53 · 52 阅读 · 0 评论 -
友元
#include <iostream>using namespace std;class Box{ double width;public: friend void printWidth(Box box); friend class BigBox; void setWidth(double wid);};class BigBox{public : void Print(int width, Box &box) {原创 2021-03-11 10:41:22 · 78 阅读 · 0 评论 -
内存模型和名称空间
存储持续性、作用域和链接性自动存储变量 如果在函数之前声明一个变量,然后在函数内又声明了同一个变量,则编译器会暂时隐藏外面的变量,在函数结束之后,恢复之前的变量。 由于自动变量的数目一直在变化,所以程序留出一段内存,将其视为栈来管理变量的增减,栈是先入后出,函数调用将参数放到栈顶,函数从左到右被压进栈中,结束之后栈顶指针缩回原来的位置。寄存器变量寄存器变量建议编译器使用CPU寄存器在存储自动变量声明方式是 register int temp;目的是为了提高访问的速度。原创 2021-03-10 16:02:55 · 69 阅读 · 0 评论 -
快速排序的C++实现和分析
快速排序每一轮找到一个关键数据 ,然后比他所有小的都放左边,比他大的都放右边,这样两边走过一趟称为一趟快速排序,然后从 中间分开,左右两边再进行一次循环 ,直到完全排序成功 。需要利用递归完成。一趟快速排序的算法是:1.设置一个定值,一般为数组的第一个数字,然后设置两个变量i,j分别指向开头末尾,用来进行遍历2.从末尾j开始向前找j--,发现比定值小等于的就让ij交换位置3.交换之后从i开始向后找i++,发现比定值大等于的让ij交换位置4.循环2-3,直到i>j 循环结束5.一趟排序.原创 2021-03-10 16:01:24 · 153 阅读 · 0 评论 -
对象和类
过程性编程和面向对象编程过程性编程:我需要输入一个人的姓名等信息,然后还需要一个函数来处理这些数据,然后还需要希望程序显示这个结果面向对象的编程:我跟踪的对象是选手,所以我需要一个对象来表示选手的各个方面,然后我需要一些方法来处理这个对象,主要通过描述对象所需的数据以及描述用户与数据交互所需的操作。抽象和类类一般由两个部分组成:类声明:以数据成员的方式描述数据部分,以成员函数(方法)的方式描述共有接口类方法定义:描述如何实现类成员函数通常将类放在头文件中,而将其实现写在文件中class原创 2021-03-10 16:00:44 · 62 阅读 · 0 评论 -
成员初始化列表语法
class MyClass{private:int a;int b;const int max;…}对于const数据成员,我们不能像常规的那样使用构造函数来初始化,也就是不能像下面的e.g那么做。对此,c++提供了特殊的语法来初始化const数据成员—成员初始化列表。首先,来看看为什么不能这么做?e.gMyClass(int c){a =0;b =0;mac = c;//no,这里出错。}我们都知道const变量一定要在创建的时候初始化:const int num =原创 2021-03-10 15:59:53 · 460 阅读 · 0 评论 -
STL
序列式容器包括:1.array 静态数组2.vector 动态数组 stack3.deque 双端队列 queue stack4.list 双向链表 stack dequepriority_queue 优先级队列,先进,优先级最高的出默认使用vector容器STL中的set模板没有at函数,而且也没有重载[],所以set几乎只能借助迭代器set:1.不再以键值对的方式存储数据,因为该容器键和值是一样的2.set容器在存储数据时,根据元素值的大小对存储的元素进行排序。3.存储到set容器中原创 2021-03-10 15:59:16 · 48 阅读 · 0 评论 -
statics
statics在c中有三种用法(面向过程的编程):1.全局静态变量(静态储存区),全局变量前加表示这个变量在文件内可见,在文件外不可见。2.局部静态变量(静态储存区),在局部变量前加表示这个变量在离开这个作用域之后就不可以访问了,直到这个函数再次被调用,而且他的值不会变。3.静态函数: 在返回值类型前加statics 函数的定义和声明都是extern的,但是静态函数只能在声明他的文件中可见,不可被其他的使用。在cpp中(面向对象):1.类的静态成员:class A{private: st原创 2021-03-10 15:58:38 · 222 阅读 · 0 评论 -
C++函数特殊使用
函数的多种新特性一、内联函数相当于将函数贴到main函数中,而不是之前的那种调用形式,可以节省调用保存现场和恢复现场的时间,但是如果同一个函数多次复用,则会增加代码段的大小。使用方式:在定义和生命的时候在前面加一个inline(内联函数不一定会被编译器采纳,而且不能递归使用)与宏定义的区别,内联函数可以在参数填写表达式,进行正确的计算。二、引用变量引用是已经定义的变量的别名但是一般用作传递函数的形参,通过将引用变量作为参数,函数将使用原始数据,而不是其副本。将rodents作为rats的别名原创 2021-03-10 15:57:54 · 120 阅读 · 0 评论 -
C++参数调用
argument 实参parameter形参因为函数中 love(char a[])传递的实质为char *a 是a的地址,所以在函数中改变a会改变a的值#include<iostream>#include<cstring>using namespace std;void mylove(char *a){ for (int i = 0; i < 6; i++) { a[i] = a[i] + 1; }}int main原创 2021-03-10 15:55:34 · 200 阅读 · 0 评论 -
C++IO
#include<iostream>#include<fstream>using namespace std;int main(){ ofstream File; File.open("1.txt"); File << "1234556"; return 0;}c++向文件中写入的方法:1.包含头文件fstream和iosteam fstream中包含类ofstream2.用ofstream声明一个对象 ifstream原创 2021-03-10 15:54:34 · 52 阅读 · 0 评论 -
C++(一)
const限定符 限定为常量不可更改cout.setf()覆盖清零行为cout默认打印6位小数float只能表示六位或者七位有效数字(int) char不会修改原来的值,而是会创建一个新的值 //新型的类型强制转换static_castnew运算符可以避开生命数组的时候必须输入常亮的限制字符串以\0作为结尾 strlen()不计算空字符#include<iostream>#include<cstring>//using namespace std;char a[]原创 2021-03-10 15:54:17 · 90 阅读 · 0 评论