![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
C/C++
Ray5505
取之于“在线”,用之于“在线”
展开
-
c-常量指针
常量指针原创 2023-01-15 18:29:52 · 135 阅读 · 0 评论 -
数据变量的内存存储格式
数据变量的内存存储格式。原创 2023-01-15 16:53:31 · 67 阅读 · 0 评论 -
c 按位运算
计算机数值计算原创 2022-08-10 14:50:22 · 217 阅读 · 0 评论 -
静态局部变量
1.静态局部变量所在的函数在多调用多次时,只有第一次才经历变量定义和初始化,以后多次在调用时不再定义和初始化,而是维持之前上一次调用时执行后这个变量的值。静态局部变量的这种特性,和全局变量非常类似。它们的相同点是都创造和初始化一次,以后调用时值保持上次的不变。不同点在于作用域不同参考:C语言局部变量、静态局部变量、全局变量与静态全局变量! - 知乎 (zhihu.com)...原创 2022-03-10 10:02:17 · 128 阅读 · 0 评论 -
指针和函数入参的理解
指针的内涵是什么?函数的参数的理解。 指针作为函数参数的理解。示例1#include <stdio.h>#include <stdlib.h>void test01(char* q){q = (char*)malloc(sizeof(char*));}int main(){char *p = NULL;test01(p);if(!p){printf("p为null\n");}...原创 2022-01-28 02:04:01 · 2270 阅读 · 0 评论 -
c59—C语言 if语句 大括号和不加大括号的区别
根据参考测试.h#include <stdio.h>#define PrintNumber1(num) \ int iIntPart; \ double dDecimalPart; \ iIntPart = (int)num; \ dDecimalPart = num - iIntPart; \ printf("Integer part: %d\n", iIntPart); \ pr原创 2021-12-31 09:39:20 · 809 阅读 · 0 评论 -
c学习-- 收藏58
1. 可重入函数浅谈可重入函数与不可重入函数【转中断处理程序不能使用printf的本质 -原创 2021-09-26 14:11:02 · 64 阅读 · 0 评论 -
c学习-- 随笔57
1. 指针减 指针 什么意思?两个指针指向同一个数组中的(可能不同的)元素的时候,它们的差就是两个元素之间的元素个数+1原创 2021-09-14 15:32:19 · 60 阅读 · 0 评论 -
c学习-- memcpy 越界56
int main(){ printf("\n");//第一个printf char *mem = malloc(sizeof (char)*16); memcpy(mem,"hellodddddddddddd",123); printf("\n");//第二个printf return 0;}意外发现,当memcpy越界时,运行代码不会崩溃,此时没有写两个 ‘printf’函数,,当添加第二个printf函数,关闭第一个printf时,代码运行到第二..原创 2021-09-08 15:41:24 · 1364 阅读 · 0 评论 -
c学习--健壮性55
代码健壮性:函数:入参检查、返回值检查变量(内存):申请完内存要memset ,如结构体变量,数组,malloc申请。段错误:数组越界,指针越界、使用空指针,内存泄露: malloc 的内存 ,使用完 没有free1. 不要相信接口数据不要相信前端传的参数,也不要信任后台返回的数据。2. 记得异常处理。3. 内存泄漏的检测。...原创 2021-09-07 09:30:54 · 131 阅读 · 0 评论 -
c学习--malloc申请的空间和直接定义变量申请的空间有什么区别?54
c语言中malloc申请的空间和直接定义变量申请的空间有什么区别?1. malloc事先分配好了内存空间。要点有三点:一是空间分配的连续性;二是动态内存申请;三是防止程序执行中出现异常错误。如果用数组定义:charp[64000],表示的是声明了一个数组,此数组的大小64000个字节。但是,请注意要点:系统这时并没有为其分配内存。只是在使用时才分配。对于p[64000]这种写法,如果系统没有足够多的内存使用,那么p[lp]所指向的,可能就是一个其它变量了,或者说p[lp]把其它变量空间覆.原创 2021-09-06 15:08:53 · 1711 阅读 · 0 评论 -
c学习--不同c文件中的同名全局变量及同名函数53
如果在不同的c文件中定义了同名的全局变量,则它们会占用相同的内存空间,而且编译链接时不会报错!这可以参考全局变量的内存初始化顺序对于局部变量而言,内存分配的顺序和代码的顺序是一样的。全局变量就不一样 了;一般的编译器, (1) 对于初始化的全局变量,碰到之后就知道这是一个定义,会马上分配空间, (2) 对于没有初始化的全局变量,因为不知道是定义还是声明,所以要在扫描完所有代码之后才能决定,这个时候编译器会读符号表,然后看哪些变量没有分配空间. ...原创 2021-09-03 10:19:21 · 3641 阅读 · 0 评论 -
c学习--局部变量和全局变量重名52
函数内部定义的局部变量与全局变量重名时,函数在使用该变量的时候会以局部变量覆盖全局变量。也就是只有局部变量会起效果。在此定义域中赋值等操作时都不会使用到全局变量。 在main函数或其他函数里定义了局部变量,同时同名的全局变量同时也存在,当调用一个使用了该变量的函数(该变量在此函数中无定义)时,函数会使用全局变量。而不是main或其他函数中定义的同名变量。 #include <stdio.h>#include <stdlib.h>static int n=5;voi原创 2021-09-02 16:44:24 · 4509 阅读 · 0 评论 -
c学习--指针与字符数组以及二级指针51
1. 字符串常量的本质表示其实是一个地址:举例: char *s ; s = "China";2. char * b , b 是一个指针,指向的内存保存 的 是char类型。 char a [10], a是字符串的首地址。也是指针,并将指针指向数组第一个元素 也是指向char 类型 区别在哪? char* b ,没有分配内存(没有指向)的指针,不赋值就是野指针。b 是变量。 char a[10], 分配...原创 2021-09-01 13:51:19 · 355 阅读 · 2 评论 -
c学习-50
随笔文件内声明定义变量(结构体);1. 函数可以用2. 引用头文件的可以用。3.变量的生命周期:局部变量:全局变量:局部变量:函数内局部变量,只在函数内使用,包括函数内嵌套的的其他函数。外部函数 ;不能调用,作用域和生命周期对不上。指针:指针变量的生命周期和作用域和普通变量一样。指针指向的地址,是永远有效的,除非指针变量改变指向,或者销毁。函数内要检查入参指针是否为空。函数 接收的参数 在内部不考虑 生命周期。堆上的变量 ,除了,函数内部使用,可通过指针传给其他函数(.原创 2021-08-30 23:10:12 · 79 阅读 · 0 评论 -
c学习-收藏48-02
1.C#中的|=是什么意思?_百度知道 (baidu.com)原创 2021-07-09 15:45:37 · 125 阅读 · 0 评论 -
c学习-50--void(*free)(mbuf*); mbuf*(*alloc)(struct mbuf_ring*);
原创 2021-06-30 16:01:11 · 107 阅读 · 0 评论 -
c学习-收藏48-01
1.C/C++中内置的宏定义 - 头文件 __原创 2021-06-17 09:15:58 · 63 阅读 · 0 评论 -
c学习--49 空结构体
1.参考:【Struct(结构体)杂谈之六】无既是有---没有成员变量的Struct(结构体)原创 2021-06-11 10:17:54 · 1092 阅读 · 1 评论 -
STL--02
1. STL1. c++标准库包含c++标准模板库(STL)2. c++标准库头文件不带“.h”,如#include<vector>3. c++ 标准库的命名空间是:std;使用前需要使用 using namespace std; 或者using std::cout;4. c标准库的头文件,没有封装到命名空间std中。...原创 2021-05-21 10:07:14 · 50 阅读 · 0 评论 -
STL--收藏01
1. c++ http://www.cplusplus.com/ cppreference.com http://gcc.gnu.org/2.原创 2021-05-21 10:14:24 · 54 阅读 · 0 评论 -
c学习-收藏48
1. 虚函数 C++ 多态的定义及实现c++虚函数详解(你肯定懂了)原创 2021-04-27 09:35:12 · 92 阅读 · 0 评论 -
c学习47-虚函数(多态)
1. 多态1. C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。2. 所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。2. 多态特点1.多态是在不同继承关系的类对象,去调同一函数,产生了不同的行为。2. 就是说,有一对继承..原创 2021-04-27 09:43:11 · 330 阅读 · 0 评论 -
c学习46-内存(野指针、垂悬指针)
基础1. 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的),此时去解引用就是去访问了一个不确定的地址,所以结果是不可知的。索引1. 段错误:一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况。2. 同一块内存释放两次,会造成内存错误,程序运行崩溃,显示“已放弃”字样。注意点:1. 测试中,野指针可以“读”,不可以赋值,读不会段错误,赋值会段错误。———原创 2021-04-26 16:35:36 · 149 阅读 · 0 评论 -
c学习-45- 编译器默认给“类”生成的几种函数(二)
索引:1. 编译器自动生成的拷贝构造函数是值拷贝(浅拷贝)。2. 生成的析构函数是空实现。3.拷贝构造函数(参数采用引用为什么不直接用对象)(待续....)——————————————————————————————————————————————1. 编译器自动生成的拷贝构造函数是值拷贝(浅拷贝)。(两次析构函数的执行,析构的都是同一块内存,或者说“p指针”delete了两次)。class class_B25{private: int a25; int *p.原创 2021-04-25 11:34:35 · 163 阅读 · 0 评论 -
c学习-44- 编译器默认给“类”生成的几种函数(-)
1. 默认生成的函数1. 默认构造函数(空实现)2. 默认析构函数(空实现)3. 默认拷贝构造函数(值拷贝)2. 注意1. 若用户自定义有参构造函数, 编译其不再提供默认无参构造函数, 仅提供析构函数和默认拷贝构造函数2. 若用户自定义拷贝构造函数, 编译其不再提供构造函数, 仅提供析构函数3.参考:c学习-38...原创 2021-04-22 22:30:41 · 415 阅读 · 0 评论 -
c学习-43-类的继承
1. 继承1、继承定义:继承就是在已有类的基础上创建新的类的过程,已有类成为基类,新类成为派生类。换句话说,就是新类将基类中的某些数据成员和成员函数给拿过来自己用了。2、同一个基类可以被多个派生类继承,同一个派生类同样也可以继承多个基类;3、从一个基类继承的方式叫单继承,从多个基类继承的方式叫多继承。2.派生类与基类的联系 1、派生类除了继承基类的某些数据成员和成员函数外还可以新增自己的数据成员和成员函数; 2、派生类可以重载基类的成员函数; 3、派生类...原创 2021-04-22 21:25:38 · 344 阅读 · 0 评论 -
c学习-41-类
1. 注意点1. 定义类时,不能给成员变量赋初值,应为类定义时,并未给其分配内存,所以初值是无法存储的。2. 类定义时默认生成的成员函数是什么样的?原创 2021-04-22 20:55:35 · 87 阅读 · 0 评论 -
c学习-42-友元函数
1. 友元函数-基础学习1. 友元函数不属于该类的成员函数,类中声明、类外定义,并且不需要加类限定;2. 可以直接访问类中的private或者protected成员3. 声明方法:friend <返回类型> <函数名> (<参数列表>);4. 如何调用友元函数,访问类中的私有和保护数据?5. 如何调用友元函数,访问类的对象中私有和保护数据?2. 友元函数-特点(1) 友元关系不能被继承。 (2) 友元关系是单向的,不具有交换性。若类B是类A的.原创 2021-04-22 18:22:29 · 227 阅读 · 0 评论 -
c学习-40- 头文件、源文件、mian文件之间的关系
1. 总结a. 谨记:声明可以多次,定义只能一次。b. 头文件一般是函数、变量、类的声明,源文件一般是是定义和实现。c. #included的作用是把文件中的内容全部copy到当前文件的#include所在的位置。d. 函数外定义变量生命周期是整个源程序,所以函数外定义的变量是全局变量。e. 声明变量可以用extern关键字也可省略。如:int a; 和 extern int a;都是声明。f. 理解什么是引用性声明、定义性声明。g. 函数内不能定义函数,所以函数生命周期都是整个源程序(c原创 2021-04-21 00:06:54 · 386 阅读 · 0 评论 -
c学习-39-extern关键字
1. extern 基础a. 谨记:声明可以多次,定义只能一次。b. 函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern的。但是引用的时候一样是需要声明的。c. 理解什么是引用性声明、定义性声明d. 头文件一般是函数、变量、类的声明,源文件一般是是定义和实现e. #included的作用是把文件中的内容全部copy到当前文件的#include所在的位置参考:c学习-38...原创 2021-04-20 22:10:40 · 50 阅读 · 0 评论 -
c学习-收藏38
1. extern extern使用方法总结!C/C++中extern关键字详解原创 2021-04-20 21:37:57 · 122 阅读 · 0 评论 -
c学习-37 关键字const学习
1.用法a. 修饰const修饰普通类型的变量b. const关键字修饰数组c. 常量指针与指针常量d. const参数传递和函数返回值。e. const修饰类成员函数2. 注意点a. const修饰的值,不是一定不可以改变的。3.const与define的区别a. 预编译指令只是对值进行简单的替换,不能进行类型检查b. 可以保护被修饰的东西,防止意外修改,增强程序的健壮性c. 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编.原创 2021-04-20 19:10:47 · 117 阅读 · 0 评论 -
c学习-36 类的成员函数
1.成员函数的代码段都不占用对象的存储空间1.1 代码实现class A22_01{private: int a22_01; char b22_01;public: void Fun22_01();};void A22_01::Fun22_01(){ int c22_01;}void test_22_01(){ printf("sizeof(A22_01)=%d\n",sizeof(A22_01));}1.2 执行结果参考:c学习-28...原创 2021-04-20 11:00:46 · 47 阅读 · 0 评论 -
c学习-35 关键字static学习,面向对象-静态成员函数(在c++语言中)
1.静态成员函数属于整个类,不用创建对象也可调用1.1 代码class A21_04{public: static void fun21_01();};void A21_04::fun21_01(){ printf("this is staic函数:fun21_01\n");}void test_21_07(){ A21_04::fun21_01();}1.2 执行结果2.静态成员函数没有this指针,因此,它无法访问属于类对象的非静态数据成员,也无法访...原创 2021-04-20 00:18:02 · 132 阅读 · 0 评论 -
c学习-34 关键字static学习,面向对象-静态数据成员(在c++语言中)
类内数据成员的声明前加上static关键字,该数据成员就是类内的静态数据成员1.不创建对象也可调用(注意:静态数据成员只能在类之外进行初始化)(静态数据成员的初始化格式:<数据类型><类名>::<静态数据成员名>=<值>)1.1 代码测试/* 不创建对象也可调用 */class A21_01{public: int a21_01; static int b21_01;};int A21_01::b21_01=2;//静态数据.原创 2021-04-19 23:34:49 · 84 阅读 · 0 评论 -
c学习-33 关键字static学习,静态函数(在c语言中)
1. 静态函数1.1 代码/* 3. 静态函数测试 */void test01_04(){ printf("this is test01_04()\n");}static void test01_05(){ printf("this is test01_05()\n");}1.2 编译结果1.31.4分析static函数(也叫内部函数):只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。非静态函数可以在另一个文件中直接引用,并且不..原创 2021-04-19 22:42:08 · 59 阅读 · 0 评论 -
c学习-32 关键字static学习,静态局部变量和静态全局变量(在c语言中)
1.c语言-静态局部变量1.1 测试代码 ( 静态局部变量的生命周期及作用域)void fun01_01_01(){ int a01_01=0; static int b01_01=0; a01_01++; b01_01++; printf("a01_01=%d ",a01_01); printf("b01_01=%d\n",b01_01);}/* 1. 静态局部变量的生命周期 */void fun01_01(){ fun01_01_..原创 2021-04-19 19:21:56 · 197 阅读 · 0 评论 -
c学习-31 共用体学习
1.共用体占用的内存等于共用体中最大的成员占用的内存1.1代码union data20_01{ int a; double b; char c;}data20_01_1;union data20_02{ int a; char b;}data20_02_1;union data20_03{ int a; char b; char c[8];}data20_03_1;/* 1.共用体占用的内存等于共用体中最大的成员占用的内存 */void te..原创 2021-04-18 23:36:23 · 86 阅读 · 0 评论 -
c学习-30-typedef关键字学习
1.为类型取一个新的名字1.1 代码void test_19_01(){ typedef int int_t; int_t a = 4; printf("a=%d\n",a); printf("sizeof(a)=%d\n",sizeof(a)); }1.2 执行结果2.为用户自定义的数据类型取一个别名2.1 代码void test_19_02(){ typedef struct student{ char name[10]; i...原创 2021-04-18 18:10:23 · 55 阅读 · 0 评论