【C/C++开发教程】
文章平均质量分 57
本专栏主要讲述C/C++语言的相关知识和应用场景,涉及到基本的C/C++语法知识,应用实践的案例等。
特别说明:
(1)订阅博主就能看博主全部的付费专栏和1000+篇文章。
(2)专栏总结文章全都来自博主多年工作经验总结和心血,绝对干货!
飞翔的鲲
一名音视频领域coder,喜欢深入钻研各种新技术(编解码、图像处理、算法优化等),擅长Matlab,Python,C编程。
CSDN明星博主,认证博客专家,视频、Matlab领域优质创作者。目前专注于音视频编解码和AI技术领域,开源分享,不忘初心,追求卓越!
欢迎订阅我的付费专栏,每篇都是博主的多年工作经验总结和呕心之作,任何问题都可以私信博主,必给您答疑解惑!希望我的博文可以帮助到你~
展开
-
【C/C++系列】C++类中引用另一个类内的指针变量
DATE: 2020.7.31文章目录1、参考2、C++一个类访问另一个类的成员函数1、参考c++类内引用另一个类的指针C++中一个类访问另外一个类的成员变量或者成员函数2、C++一个类访问另一个类的成员函数方法:通过在一个类中定义另外一个类的成员为指针类型。并用this指针管理对象的内存,实现数据的传递。这样,TEncSearch类中就可以访问TEncTop类中的m_integralImage指针和m_integralImage指针了。class TEncSearch{public原创 2020-07-30 20:35:50 · 1840 阅读 · 0 评论 -
【C/C++系列】两种结构体成员初始化方式:顺序和乱序
DATE: 2019-5-14【Tag:工程实践】前言 C语言中的结构体类型在进行成员初始化时,我们通常采用顺序初始化的方式。今天,在看同事写的代码时,发现还可以采用乱序的方式进行初始化,并且这种方式可以明确指定每个成员的值,看起来比较清晰。原创 2019-05-14 20:39:10 · 2741 阅读 · 0 评论 -
【C/C++系列】C工程中灵活的参数解析方式
Date: 2019-5-13前言 在工程实践中,通常我们在命令行传递参数时,会直接通过argv的方式将入参一一传递进去,这种方式简单且固定,不具扩展性,并且在大的工程中参数传递数目较多时,会出现漏传参数导致出现段错误等问题。本文主要提供了一种灵活的参数解析方式,推荐使用这种方式。1、 参考strcmp_referencestrncmp_reference2、 strcmp和s...原创 2019-05-13 20:37:26 · 287 阅读 · 0 评论 -
【C/C++系列】C语言中实现删除指定文件
###Date: 2018-1-26### Author :SoaringLee=========================优雅的分割线============================== C语言中文件删除操作可以通过remove()函数实现。【头文件】 #include remove()函数用于删除指定的文件,其原型如下: int原创 2018-01-26 15:46:06 · 8589 阅读 · 0 评论 -
【C/C++系列】数组去重代码实现
【代码】【C/C++系列】数组去重代码实现。原创 2022-09-21 14:09:54 · 274 阅读 · 0 评论 -
【C系列】asm关键字和__asm关键字的区别
DATE: 2021.12.17文章目录1、参考2、asm关键字1、参考https://blog.csdn.net/wcccg/article/details/78496940https://bbs.elecfans.com/jishu_1729984_1_1.html#comment_top2、asm关键字在C或者C++代码中,可以使用asm关键字嵌入内联汇编代码,加速程序运行效率。asm后跟一个程序集指令、一组括在大括号中的指令或者至少一对空大括号。格式如下:asm volatile原创 2021-12-19 17:27:17 · 2192 阅读 · 0 评论 -
【编程系列】编程规范之文件头和函数头格式
DATE: 2019-6-26【Tags:编程规范】前言 编程规范是指采用编程语言进行程序设计和开发时,采用一种规范的格式,包括注释、说明、编程格式以及风格等。不同的程序员具有不同的编程风格,良好的编程风格和编程规范对于程序阅读和理解具有很大的帮助。本文主要总结了在编程实践中的一些比较好的编程风格和规范。原创 2019-06-29 20:03:10 · 1604 阅读 · 0 评论 -
【C/C++系列】C语言中__attribute__机制的使用
DATE: 2021.10.25文章目录1、介绍2、用法2.1、设置函数属性2.2、设置变量属性2.3、设置类型属性1、介绍GNU C 的一大特色就是__attribute__ 机制。attribute 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。_attribute_ 语法格式为:__attribute__ ((attribute-list))2、用法2.1、设置函数属性alig原创 2021-10-25 15:35:11 · 981 阅读 · 0 评论 -
【C系列】How to printf “unsigned long” in C?
DATE: 2020.11.28原创 2020-11-28 22:06:37 · 714 阅读 · 0 评论 -
【C系列】结构体数组初始化方法
DATE: 2020.11.23文章目录1、参考2、结构体数组初始化1、参考Problems Initializing Structures2、结构体数组初始化原创 2020-11-23 09:44:15 · 2610 阅读 · 0 评论 -
【C/C++系列】#pragma once 与#ifndef的区别与作用
DATE: 2018.12.9为了避免同一个文件被include多次,主要有2种方式:#ifndef方式 #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 一些声明语句 #endif#pragma once方式 #pragma once ... ... // 一些声明语句 ...原创 2018-12-09 17:13:24 · 269 阅读 · 0 评论 -
【C/C++系列】inline,__inline,__forceinline的详细说明
DATE: 2018.11.14转载自:https://www.cnblogs.com/xuemaxiongfeng/articles/2464850.html__inline 关键字建议编译器在合理的情况下内联编译 C 或 C++ 函数。__inline 语义与 C++ inline 关键字的语义完全相同。__inline 是一个存储类限定符。 它不影响函数的类型。格式:inline _declarator;__inline _declarator; // Microsoft相关__fo转载 2018-11-14 22:35:42 · 2012 阅读 · 0 评论 -
【C/C++系列】C99与C89区别以及转换方法
DATE: 2018.11.141、 C99与C89区别:https://blog.csdn.net/jessie_is_gemini/article/details/50823004https://www.cnblogs.com/xiaoyoucai/p/6146784.html(1)对数组的增强可变长数组 C99中,程序员声明数组时,数组的维数可以由任一有效的整型表达式确定,包...原创 2018-11-14 19:59:02 · 2099 阅读 · 0 评论 -
【C/C++系列】C99中stdint.h和inttype.h头文件的使用方法及获取路径
Date: 2018.10.231、参考:https://blog.csdn.net/baidu_16886827/article/details/38350299https://blog.csdn.net/swartz_lubel/article/details/771711912、使用方法 这两个头文件是C99标准定义的关于类型重定义的,主要目的是实现统一的跨平台数据定义。...原创 2018-10-23 16:31:14 · 2358 阅读 · 0 评论 -
【C编程系列】之朝花夕拾:(1) 基础知识
DATE: 2019-3-8前言本系列为重读C/C++ Primer技术书的读书笔记。原创 2019-03-09 11:31:13 · 213 阅读 · 0 评论 -
【C/C++系列】文件操作函数:fprintf,fread,fwrite,fseek,ftell,fopen,fclose,fflush以及获取文件长度示例
Date: 2018.9.201、参考http://www.cplusplus.com/reference/cstdio/fprintf/http://www.cplusplus.com/reference/cstdio/fwrite/2、 fprintf关于fprintf的使用可以参考:https://blog.csdn.net/SoaringLee_fighting/article/details/788160233、fread作用:从一个文件流中读取数据。Read block of原创 2018-09-20 18:59:58 · 882 阅读 · 0 评论 -
【C/C++系列】#pragma的用法
DATE: 2018.12.9转载自:https://www.cnblogs.com/fnlingnzb-learner/p/5854494.html 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。...转载 2018-12-09 21:59:45 · 2583 阅读 · 0 评论 -
【C/C++系列】野指针(迷途指针)的理解
解释代码:#include <iostream.h>int main(){int *pInt = new int;*pInt=10;cout<<*pInt<<endl;delete pInt;pInt=0;*pInt=20; // oh no, this was deleled.cout<<*原创 2018-12-16 19:42:23 · 323 阅读 · 0 评论 -
【C/C++系列】C++中volatile类型修饰符的深入理解
为什么用volatile?C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 “The C++ Programming Language” 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler that an object ...转载 2018-12-11 23:07:57 · 789 阅读 · 0 评论 -
【C/C++系列】交换两个数字或值的各种算法实现
1、借助临时变量temp:(1)值传递方式:int swap(int a,int b){int temp;temp = a;a = b;b = temp;}(2)引用传递:int swap(int &a , int &b){int temp = a;a= b;b = temp;}(3)指针传递:int swap(int *a, int ** b)...原创 2018-12-11 23:16:35 · 292 阅读 · 0 评论 -
【PE/C系列】printf 连带错误机制和uint64打印输出方法
Date: 2019.4.2【Tag:工程项目经验】前言 C语言中的printf函数是经典的打印函数,使用频率很高。本文主要介绍printf的使用方法以及使用过程中遇到的相关问题,uint64的打印输出方法。printf使用方法:【C】printf()详解printf连带错误机制uint64打印输出方法原创 2019-04-05 15:36:33 · 763 阅读 · 0 评论 -
【C系列】客户账单管理系统C实现
Date: 2019.4.21【Tag:工程实现】Author: SoaringLee 客户账单管理系统C实现原创 2019-04-21 20:33:34 · 1423 阅读 · 0 评论 -
【Base系列】系统宏_M_IX86,_M_AMD64和_M_X64和MSVC预定义宏 分析
Date: 2019.04.18【Tag:基础知识】Author: SoaringLee系统宏_M_IX86,_M_AMD64和_M_X64和MSVC预定义宏 分析原创 2019-04-18 17:22:28 · 1898 阅读 · 0 评论 -
【C/C++系列】#define中#和##的作用
Date:2017/9/29 在学习的过程中发现,宏函数的作用还是很大的。通过使用宏函数可以有效减少函数的声明。通过连接符##可以实现这一点。下面就记录一下#define中#和##的作用。 #:字符串化,宏定义中的#是把跟在后面的参数转成一个字符串; ##:连接字符串例子:#include <iostream>using namespace std;#define to_string(s) #s#define test_macro "hel...原创 2017-09-29 15:34:41 · 536 阅读 · 0 评论 -
【C/C++系列】C语言中关于extern的理解
Date: 2018/9/25extern:函数声明符,表示当前声明的函数是在外部定义的。原创 2018-09-25 20:20:48 · 289 阅读 · 0 评论 -
【C/C++系列】C语言中宏定义连接符##和转换符#的用法详解
目录1、参考2、宏定义中特殊符号的含义Date: 2018.9.171、参考https://blog.csdn.net/cbnotes/article/details/50388325https://blog.csdn.net/gordennizaicunzai/article/details/804731802、宏定义中特殊符号的含义宏定义语句连接符 \ : 在C...原创 2018-09-17 19:45:09 · 508 阅读 · 0 评论 -
【C/C++系列】Visual Studio中F5和Ctrl+F5的区别
Date: 2018.5.24==================================================================在Visual Studio中,有两个运行程序的快捷键,之前一直忽略了它们两者之前的区别,现在特总结如下:F5:启动调试,启动目标文件并将调试器附加到目标进程中,一般用于通过加断点调试用;Ctrl+F5:开始执行(不调试),启动目标文件,但不附加调试器。一般会单独出现一个运行结果界面。参考:https://www.zh.原创 2018-05-24 21:33:22 · 4575 阅读 · 0 评论 -
【C/C++系列】malloc、calloc、realloc的区别
Date:2017-12-24Author:SoaringLeeC语言跟内存分配方式<1>从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.<2>在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限.<3>从堆上分...转载 2017-12-20 16:06:19 · 306 阅读 · 0 评论 -
【C/C++系列】fwrite与fflush的配合使用
Date:2017-12-24Author: SoaringLee一、fprintf的使用fprintf是C/C++中的一个格式化写—库函数,位于头文件<stdio.h>中,其作用是格式化输出到一个流/文件中;函数原型为int fprintf( FILE *stream, const char *format, [ argument ]...),fprintf()函数根据指定的格式(format)向输出流(stream)写入数据(argument)。用法:#inc..原创 2017-12-15 19:10:00 · 1654 阅读 · 0 评论 -
【C/C++系列】linux下C中文件操作及文件结构体:FILE,open(),close()
Date: 2017-12-24Author: SoaringLee=======================================================================================一、Linux系统下面c中的文件结构体FILE:该结构体定义在:/usr/include/libio.hstruct _IO_FILE { int _flags; /* High-order word is _IO_MAG.原创 2017-12-14 20:35:07 · 2268 阅读 · 0 评论 -
【C/C++系列】_stdcall与_cdel区别
###Date:2017/10/31转载自:http://blog.csdn.net/u014338577/article/details/485828471._cdecl(1). 是C Declaration的缩写,表示C语言默认的函数调用方法,实际上也是C++的默认的函数调用方法。(2). 所有参数从右到左依次入栈,这些参数由转载 2017-10-31 18:49:56 · 2519 阅读 · 0 评论 -
【C/C++系列】静态链接的编译过程和链接过程
###Date:2017/8/30编译过程:扫描、语法分析、语义分析、源代码优化、代码生成和目标代码优化。链接过程:地址和空间分配、符号决议、重定位等步骤。目标文件的格式: Wiindows平台下的PE和Linux下的ELF都是COFF格式的变种。动态链接库和静态链接都按照可执行文件格式的存储。原创 2017-08-30 22:54:55 · 589 阅读 · 0 评论 -
【项目经验】C语言中inline的深入理解
c/c++中的inline,使用在函数声明处,表示程序员请求编译器在此函数的被调用处将此函数实现插入,而不是像普通函数那样生成调用代码(申请是否有效取决于编译器)。一般地说,这样作的优点是省掉了调用函数的开销;缺点则是可能会增加代所生成目标代码的尺寸(二班的除外,二班情况下,inline函数甚至会返过来降低程序的性能)。实际上,即使没有手工指定inline函数,编译器一般还会选择一些代码量原创 2017-08-12 19:06:07 · 2372 阅读 · 0 评论 -
【C/C++系列】系列单元测试中关于桩函数和打桩
Date: 2017/9/9桩函数(Stub)是模拟被测试模块所调用的模块。 什么是桩 桩,或称桩代码,是指用来代替关联代码或者未实现代码的代码。如果函数B用B1来代替,那么,B称为原函数,B1称为桩函数。打桩就是编写或生成桩代码。 打桩的目的打桩的目的主要有:隔离、补齐、控制。 隔离是指将测试任务从产品项目中分离出来,使之能够独立编译、链接,并独立运行。隔离的基本方法就是打桩,将测试任务之外的,并...原创 2017-09-09 12:40:42 · 7786 阅读 · 1 评论 -
【C/C++系列】含有结构体的结构体的内存分配的分析
Date:2017/5/20Author: Soaringlee 首先分析一下含有基本数据类型成员的结构体的内存分配:struct空间分配的原则:(1) 整体空间是占用空间最大的成员所占字节数的整数倍;(2)数据对齐原则:内容按成员先后顺序摆放,当排到该成员变量时,其前面已摆放的空间大小必须是该成员类型大小的整数倍,如果不够,则补齐,依次向后类推。含有结构体的结构体的空间分配:(1) 整体空间是子结构体和父结构体中占用空间最大的成员所占字节数的整数倍;(2)数...原创 2017-05-19 20:15:28 · 636 阅读 · 0 评论 -
【C/C++系列】C语言中的__FILE__、__LINE__和#line用法
C语言中的__FILE__用以指示本行语句所在源文件的文件。例如:#include int main(){printf("%s\n",__FILE__);}在gcc编译生成a.out,执行后输出结果为:test.c在windows的VS2013下编译执行结果为:d:\work\c&c++\project\project1\project1\main.cpp原创 2017-03-14 19:30:56 · 4410 阅读 · 0 评论 -
【C/C++系列】C语言time.h中clock()函数的使用
Date:2017-12-21Author: SoaringLee C语言中求程序执行的时间可以使用clock()函数,clock_t clock(void);这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对它的定义:#ifndef _CLOCK_T_DEFINED typedef long clock_t; ...原创 2017-12-21 19:20:30 · 805 阅读 · 0 评论 -
【C/C++系列】产生一定范围内一定数量的不同随机数
Date: 2018-1-13随机函数介绍1.rand()功能:随机数发生器用法:int rand(void)所在头文件: stdlib.hrand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的。rand()返回一随机数值的范围在0至RAND_MAX 间。RAND_MAX的范围最少是在32767之间(int)。用unsigned int 双字节是65535,四字节是4294967295的整数范围。0~RAND_MAX每个数字被选原创 2018-01-13 16:30:34 · 1377 阅读 · 0 评论 -
【C/C++系列】各种数据类型的取值范围(常用)
转载自:http://blog.csdn.net/mafuli007/article/details/7325510速查表:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 Bytes)int -2147483648 ~ +21474836转载 2018-01-25 19:45:30 · 1437 阅读 · 0 评论 -
【C/C++系列】防止头文件的重复包含的解决办法及对头文件的理解
###Date: 2018.5.5============================================================================ 头文件一般只包含函数或变量的声明,不要包含定义,否则会出现重定义的问题;一般将函数实现或变量的定义放在C或cpp中;另外在c或cpp中头文件的重复包含也会出现重定义的问题。原创 2018-05-05 15:59:08 · 431 阅读 · 0 评论