C/C++
文章平均质量分 66
C语言提高
BUG从入门到精通
业精于勤,荒于嬉;行成于思,毁于随。
展开
-
void与void*
void与void *void关键字的使用规则:1. 如果函数没有返回值,那么应声明为void类型2. 如果函数无参数,那么应声明其参数为void3. 如果函数的参数可以是任意类型指针,那么应声明其参数为void *4. void不能代表一个真实的变量void真正发挥的作用在于:对函数返回的限定 对函数参数的限定规则一:如果函数没有返回值,那么应声明为void类型我们在编写C/C++程序时,对于任何函数都必须一个不漏地指定其类型。如果函数没有返回值,一定要声明为...转载 2021-04-14 09:22:59 · 475 阅读 · 0 评论 -
【二次转载】C++前置声明的应用与缺陷
前置声明的使用 有一定C++开发经验的朋友可能会遇到这样的场景:两个类A与B是强耦合关系,类A要引用B的对象,类B也要引用类A的对象。好的,不难,我的第一直觉让我写出这样的代码:// A.h#include "B.h"class A{ B b;public: A(void); virtual ~A(void);}; //A.cpp#include "A.h"A::A(void){} A::~A(void){} // B.h#includ.转载 2020-11-26 10:13:37 · 373 阅读 · 0 评论 -
【一天从C到C++】高级篇
目录1.文件和流2.异常处理3.动态内存分配4.命名空间5.模板6.预处理器7.信号处理1.文件和流在头文件<fstream>中打开文件:void open(const char *filename, ios::openmode mode); 其中打开模式如下:模式标志 描述 ios::app 追加模式。所有写入都追加到文件末尾。 ios::ate 文件打开后定位到文件末尾。 ios::in 打开文件用于读取。..原创 2020-11-23 18:07:29 · 249 阅读 · 0 评论 -
【一天从C到C++】基础篇
快速入门Hello C++C++标准程序库中的所有标识符都被定义于一个名为std的namespace中,因此要使用using namespace std;输出使用cout#include <iostream>using namespace std;int main(){ cout << "hello C++" << endl; return 0;}输入用cin#include <iostream>using na.原创 2020-11-23 15:59:39 · 257 阅读 · 0 评论 -
【转载】C++ 多态的实现及原理
C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数 1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。 2:存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。 3:多态性是一个接口多种实现,是面向对象的核心,分为类的多态...转载 2020-11-23 15:02:53 · 156 阅读 · 0 评论 -
C/C++函数传递二维数组
目录函数参数传递二维数组的问题解决方案1.传递第二维和更高维的大小2.根据数组的存储原理把二位数组当作一维数组来操作(降维处理)函数参数传递二维数组的问题将二维数组当作参数的时候,必须指明所有维数大小或者省略第一维的,但是不能省略第二维或者更高维的大小,这是由编译器原理限制的。在学编译原理的时候知道编译器是这样处理数组的:对于数组 int p[m][n];如果要取p[i][j]的值(i>=0 && i<m && 0<=j &a原创 2020-11-20 10:38:31 · 10475 阅读 · 0 评论 -
malloc、calloc、realloc的区别
(1)C语言跟内存分配方式<1>从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.<2>在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限.<3>从堆上分配,亦称动态内存分配. 程序在运行的时候用malloc或new申请任意...转载 2020-11-07 11:52:10 · 134 阅读 · 0 评论 -
C语言指针传递参数
这里我们应该明白 1.指针实质是一个内存地址,这个内存地址就是指针的指向地址,这个地址及其以后的地址中的内容就是我们说的指针指向的内容。2.函数在传递参数是传递的一定是形参。也就是说,其实这里作为参数传递的指针也是形参,他也是原指针变量的拷贝,在上面那段代码中的函数里的内容并没有修改主函数中的指针变量,而是修改的形参指针,并没什么意义。原创 2017-11-29 23:47:48 · 13061 阅读 · 0 评论 -
【C语言-static】静态局部变量、静态全局变量、静态函数
static修饰的变量是静态变量,所谓静态是指他的存储地址不变,与全局变量一起放在全局数据区(静态区),全局数据区的变量只初始化一次,默认初始化为0,具有和程序运行同样长的生存周期。.1.修饰局部变量——静态局部变量修改普通局部变量的生存周期,可用来防止函数执行完之后数据丢失。我们知道,每次调用函数的时候,普通局部变量都会被初始化一次,存放在栈区,并在函数结束的时候释放所占内存,数据会因此丢失。而局部静态变量存在全局数据区(静态区),只要成需在运行,就不会丢失数据,可以长期生存。2.修饰全局变量原创 2020-10-14 14:55:24 · 430 阅读 · 0 评论 -
C语言易错点笔记
1.使用 #if 注释掉一段代码#if 0 statements#endif2.在C语言中,数组参数是以引用形式传递的,也就是地址调用,而标量和常量视按值传递的。在函数中修改标量参数都会在函数返回时丢失,而数组则不会。换个角度理解:所有传递给函数的参数都是按值传递的。3.常用 scanf 格式码%d int %ld long %f float...原创 2019-12-30 10:21:32 · 343 阅读 · 0 评论