C/C++
coffee-123
这个作者很懒,什么都没留下…
展开
-
C语言内联函数
当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置。这样做的好处是省去了调用的过程,加快程序运行速度。(函数的调用过程,由于有前面所说的参数入栈等操作,所以总要多占用一些时间)。这样做的不好处:由于每当代码调用到内联函数,就需要在调用处直接插入一段该函数的代码,所以程序的体积将增大。内联函数在编译时展开使用内联函数时应注意以下几个问题:...转载 2019-02-27 20:41:40 · 3911 阅读 · 0 评论 -
C/C++知识点总结(四)
一,用C++设计一个不能被继承的类首先想到的是在C++中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,只要把它的构造函数和析构函数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函数、析构函数而导致编译错误。可是这个类的构造函数和析构函数都是私有函数了,怎样才能得到该类的实例呢?可以通过定义静态来创...原创 2020-01-11 17:58:40 · 362 阅读 · 0 评论 -
C/C++知识点总结(三)指针问题
一,C++内存泄漏、野指针和空指针(1)避免内存泄露在C/C++中,通过动态内存分配函数(如malloc系统函数)或者new运算符分配的动态内存在使用完之后需要手动释放。否则会造成内存泄露。即使在malloc/new后显示调用了free/delete释放内存,但是由于异常可能会导致释放内存的free/delete语句得不到执行,也会发生内存泄露。(2)不要使用野指针野指针也叫悬...原创 2020-01-11 17:11:50 · 1793 阅读 · 1 评论 -
C/C++知识点总结(二)
一、关键字1,volatile作用Volatile关键词的第一个特性:易变性。所谓的易变性,在汇编层面反映出来,就是两条语句,下一条语句不会直接使用上一条语句对应的volatile变量的寄存器内容,而是重新从内存中读取。Volatile关键词的第二个特性:“不可优化”特性。volatile告诉编译器,不要对我这个变量进行各种激进的优化,甚至将变量直接消除,保证程序员写在代码中的指令,一...原创 2020-01-07 23:26:18 · 693 阅读 · 0 评论 -
vector容器
在标准容器中,只有vector和string提供了所有这些函数。(1)size()可以获得容器中有多少元素,但不能获得容器为它容纳的元素分配的内存大小。(2)capacity()可以获得容器在它已经分配的内存中可以容纳多少元素。那是容器在那块内存中总共可以容纳多少元素,而不是还可以容纳多少元素。如果想知道一个vector或string中有多少没有被占用的内存,则必须从capacity()中减...转载 2019-05-27 18:23:33 · 141 阅读 · 0 评论 -
string类的实现
类string的原型代码如下所示。class String{public: String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(); ...转载 2019-05-27 15:38:02 · 372 阅读 · 0 评论 -
C/C++知识点总结(一)
1.struct和class的区别C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!!最本质的一个区别就是默认的访问控制,体现在两个方面:1)默认的继承访问权限。struct是public的,clas...原创 2019-10-11 15:04:14 · 185 阅读 · 0 评论 -
静态库和动态库
1.静态库的创建和使用目录结构myCalc├── include│ └── head.h├── lib│ └── libMyCalc.a├── main.c└── src ├── add.c ├── div.c ├── mul.c ├── sub.c(1)描述优点寻址方便、速度快。 库被打包到可执行程序中,直接发布可执行程...转载 2019-04-14 23:13:51 · 117 阅读 · 0 评论 -
C语言复制和比较字符串
1.strcpy函数char *strcpy(char* dest, const char *src);strcpy是依据 “\0”作为结束判断的,会复制'\0'字符;如果dest 的空间不够,则会引起 buffer overflow。2.strncpy函数char *strncpy(char *dest, const char *src, int n);当n>str...转载 2019-02-27 10:02:57 · 12203 阅读 · 0 评论 -
C语言回调函数
函数指针如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。int Func(int x); /*声明一个函数*/int (*p) (int x); /*定义一个函数指针*/p = Func; /*...转载 2019-02-27 21:46:41 · 491 阅读 · 0 评论 -
C语言程序的编译流程
以hello.c文件为例:从 高级语言->汇编语言->机器语言(二进制) 预处理编译器:cpp gcc -E hello.c -o hello.i 头文件展开,宏替换,注释去掉 编译器:gcc gcc -S hello.i -o hello.s c文件变成汇编文件 汇编器:as gcc -c hello.s -o hello.o 汇编文件变成二进制文件...转载 2019-02-27 20:56:44 · 5848 阅读 · 1 评论