
C/C++
木槿花荼
这个作者很懒,什么都没留下…
展开
-
shell Mybash项目
Shell项目Bash:命令解析器 获取用户输入的命令 创建子进程,由子进程执行命令对应的可执行文件Mybash具体实现的命令:ls:仅显示当前目录下的文件,在mybin下实现扫描目录参考linux程序设计3.8节扫描目录opendir函数打开一个目录并建立一个目录流。如果成功,返回一个指向DIR结构的指针#include<dirent.h>DIR* opendir(const char *path)Readdir函数返回一个指针,该指针指向的结构里保存着目录原创 2020-10-09 16:05:39 · 183 阅读 · 0 评论 -
C++——const和static区别
1.const修饰成员变量——>常成员变量(一定要在构造函数的初始化列表里面进行初始化)static修饰成员变量(不属于对象)成员变量时共享的,一定要在类外初始化2.const修饰对象——>常对象(特点:1.成员变量2.不能调用普通的成员方法,只能调用常方法。)普通的对象可以调用常方法static修饰成员方法:1.thiscall——>cdecl约定2.没有this指针,不能访问普通的成员变量3.能访问静态的成员变量,全局变量4.不依赖对象普通的成员方法原创 2020-09-12 08:30:53 · 710 阅读 · 0 评论 -
C++——Struct和Class的区别
1.Struct在C语言中定义结构体,C++中同class定义类Struct可以包含方法,能写访问限定符,可以实现继承和多态2.默认继承时,基类用Struct 定义,继承方式为public积累用Class定义,继承方式为private3.Class可以用来定义模板类型参数,Struct不可以4.定义类类型时,若没有给出访问限定符,Class默认private,Struct默认public5.C语言中,空Struct,sizeof求值的大小为0,C++中为1(VS不允许定义空的Stru原创 2020-09-11 22:11:47 · 191 阅读 · 0 评论 -
C++——堆和栈的区别(C++面试)
堆和栈的区别要从两方面来讲:一、数据结构1.栈内存是由系统分配,系统释放,以函数为单位进行栈内存分配,函数栈帧、局部变量、形参变量都存储在栈内存上堆内存是由用户自己分配的,C语言用malloc/free进行申请/释放内存,C++用new/delete进行申请/释放内存,由于堆需要用户自己管理,因此内存很容易造成泄露,而栈不会。2.栈的内存分配释放速度快,效率高,内存都是连续的堆内存的分配释放相对来说效率低一些,内存不一定连续,容易产生内存碎片,但灵活性高二、虚拟地址空间首先,原创 2020-09-11 21:59:04 · 1245 阅读 · 0 评论 -
C++——编译运行原理
编译连接运行原理(将.cpp文件编译为exe文件的过程):编译运行原理是指将C/C++语言通过汇编生成汇编语言并转换为机器语言的过程。一、预编译(生成*.i文件)1.将所有的“#define”删除,并且展开所有的宏2.处理掉所有的条件预编译指令,如:"#if","#ifend","#endif","#elif","else","#endif"3.处理"#include"指令,这是一个递归的过程4.删除所有的注释"//",和"/**/"5.添加行号和文件名标识6.保留所有的#pra原创 2020-09-06 21:40:14 · 716 阅读 · 0 评论 -
C++——对象的生存周期
对象的生存周期#include<iostream>class Test{public: Test() { std::cout << this << " :Test::Test()" << std::endl; ma = mb = 0; } Test(int a) { std::cout << this...原创 2019-10-11 15:09:19 · 253 阅读 · 0 评论 -
C++实现C语言中的链表
#include<iostream>class CLink;class Node{private: int mdata; Node* pnext; friend class CLink;};class CLink{public: CLink() { phead = new Node(); phead->pnext = NULL; } CL...原创 2019-10-10 19:50:14 · 214 阅读 · 1 评论 -
C++——类中的六个默认函数
对象:内存单元+资源定义:开辟内存,产物为变量生成:1.开辟空间 2.调用构造函数(给开辟的内存初始化)销毁:1.调用析构函数(释放资源) 2.释放空间类中的六个默认函数:析构函数、构造函数、拷贝构造函数、赋值运算符重载函数、取地址操作符的重载函数、const修饰的求地址符重载函数1.构造函数(实现初始化,与类名相同)作用:给...原创 2019-10-10 19:41:23 · 432 阅读 · 0 评论 -
C/C++——内联函数(inline)
内联函数在函数的调用点处直接代码展开,在编译阶段处理宏和内联函数有什么区别?宏-->文本替换(没有安全检查,没有类型检查,不安全)内联函数(一种更安全的宏)(具有安全检查、类型检查,安全)inline函数的优点:没有开栈和清栈的过程,效率高inline函数的缺点:以代码膨胀为代价,以空间换时间的思想设计建议:1.如果开栈(清栈)的效率大于执行的效率,代码体少,代码...原创 2019-10-10 18:23:23 · 159 阅读 · 0 评论 -
C/C++——内存对齐
内存对齐主要存在于结构体中用于计算结构体的大小内存对齐的概念:各种数据存放的地址需要能够整除该数据本身的字节数(char可存放在任意地址,short能被2整除,int能被4整除)计算内存对齐的方法:1、先将每个成员的字节数写出,然后从第二个成员开始,将前面成员的总字节数补齐成当前字节数的倍数2、结构体的总大小,一定要能整除单个成员最大类型的大小struct A{ int a;//4个...原创 2019-03-30 10:54:58 · 192 阅读 · 0 评论