
C++基础
文章平均质量分 72
化茧成蝶007
从事Linux下的开发,熟悉shell,Python,c++,c,目前学习qt开发
展开
-
C++中static_cast, dynamic_cast用法
static_caststatic_cast的函数原型如下:static_cast(expression)11说明: 该运算符把expression转换为type-id类型。具体用法如下:用于类层次结构中基类和子类之间指针或引用的转换。向上转型(把子类的指针或引用转换成基类表示)是安全的;向下转型(把基类指针或引用转换成子类指针或引用)时,由于没有动态类型检转载 2017-08-12 19:46:25 · 260 阅读 · 0 评论 -
C++基础知识积累
访问控制和继承访问publicprotectedprivate同一个类yesyesyes派生类yesyesno外部的类yesnono一个派生类继承了所有的基类方法,但下列情况除外:基类的构造函数、原创 2017-08-26 19:53:49 · 174 阅读 · 0 评论 -
\r 和 \n 和 \r\n的区别是?
#include #include int main(){ printf("hello world\n"); printf("hello\rworld\n"); printf("hello\r\nworld"); printf("hello world\r\n"); return 0;}原创 2017-08-27 22:58:23 · 412 阅读 · 0 评论 -
C语言 数组与指针(二)
数组与指针的纠葛在C语言中,根据定义,表达式 e1[e2] 准确地对应于表达式 *((e1)+(e2))。因此,要求表达式 e1[e2] 的其中一个操作数是指针,另一个操作数是整数。且这两个操作数的顺序可以颠倒。故: a[4] 等同于 4[a] 等同于 *(a+4)*编译器把所有的e1[e2]表达式转换成 \((e1)+(e2))。所以,以下标的形式访问在本质上与以指针的形原创 2017-08-23 22:15:06 · 263 阅读 · 0 评论 -
C语言 函数指针
函数指针函数指针就是函数的指针。它是一个指针,指向一个函数。(即函数在内存中的起始位置地址)实际上,所有的函数名在表达式和初始化中,总是隐式地退化为指针。例:int r , (*fp)( ) , func( ) ;fp= func ; //函数名退化为指针r= (*fp)( ) ; //等价于r=fp( ) ;无论fp是函数名还是函数指针,都能正确工作。因为原创 2017-08-23 22:28:32 · 231 阅读 · 0 评论 -
C语言 类型转换
类型转换在 C 语言的表达式赋值时,要小心背后默默的隐式类型转换,它们会导致隐藏的 Bug。C语言的整型提升规则C的整型算数运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符型和短整型操作数在使用之前被转换为普通整型。例:char a,b,c ;a = b+c ;注意,根据整型提升规则,上面b和c的值被提升为普通整型,原创 2017-08-23 23:05:58 · 261 阅读 · 0 评论 -
C语言 输入
流流是什么?形象的比喻——水流,文件和程序之间连接一个管道,水流就在之间形成了,自然也就出现了方向:可以流进,也可以流出。便于理解,这么定义流: 流就是一个管道里面有流水,这个管道连接了文件和程序。UNIX系统认为一切皆文件,所有的外部设备都被看做文件。C语言系统定义了三个默认的文件指针:1、stdin 即标准输入文件,与键盘连接。(即把键盘当做文件)2、std原创 2017-08-23 23:51:38 · 397 阅读 · 0 评论 -
getopt_long 函数详解
文件#include 函数原型int getopt_long(int argc, char * const argv[],const char *optstring,const struct option*longopts, int *longindex);函数说明getopt被用来解析命令行选项参数。getopt_long支持长选项的命令行解析,使原创 2017-08-28 22:48:31 · 1620 阅读 · 1 评论 -
关于setvbuf()函数的详解
为什么要使用setvbuf函数 如果你的内存足够大,可以把文件IO的BUF设置大一些,这样每次你用fopen/fread/fwrite/fscanf/fprintf语句的时候,都会在内存里操作,减少内存到磁盘IO读写的操作次数,提高系统效率。 如果你的程序的功能涉及到类似数据库、视频、音频、图像处理等大量需要爆发式磁盘到内存的IO情况下,可以考虑用setvbuf进行优化内存IO,其原创 2017-08-29 23:15:08 · 8326 阅读 · 0 评论 -
Qt 信号和槽机制 优点 效率的详解
一、信号和槽机制Qt提供了信号和槽机制用于完成界面操作的响应,是完成任意两个Qt对象之间的通信机制。其中,信号会在某个特定情况或动作下被触发,槽是等同于接收并处理信号的函数。二、、信号和槽机制的优点1、类型安全。需要关联的信号和槽的签名必须是等同。即信号的参数类型和参数个数 同接收该信号的槽的参数类型和参数个数相同。2、松散耦合。信号和槽机制减弱了Qt对象的耦合度。原创 2017-09-23 20:41:48 · 12608 阅读 · 0 评论 -
fscanf 函数详解
fscanf位于头文件stdio.h>中,函数原型为int fscanf(FILE*stream, constchar*format, [argument...]); 其功能为根据数据格式(format)从输入流(stream)中写入数据(argument);与fgets的差别在于:fscanf遇到空格和换行时结束,注意空格时也结束,fgets遇到空格不结束。返回值:整型,成功返回读入的参原创 2017-08-29 23:29:19 · 756 阅读 · 0 评论 -
C语言程序可以没有main函数
学习C语言的同学都知道,每个C程序要有一个main函数,程序从main函数开始执行,在main函数中结束。但事实上,C程序也可以没有main函数,或者说自己可以指定入口函数。下面这篇文章介绍了如何实现这一过程。这篇文章转自:http://www.codeweblog.com,作者不详。学习这个内容对程序设计没啥影响,但能更深入地了解程序编译和链接的原理。 这篇文章主要介绍了转载 2017-08-31 10:56:56 · 1113 阅读 · 0 评论 -
suricata 源码详细讲解
从main函数开始https://my.oschina.net/openadrian/blog/184621原创 2017-08-31 11:14:04 · 1733 阅读 · 0 评论 -
嵌入式系统平台,读取framebuffer保存为png图片
#include #include #include #include #include #include #include #include #include #include static int Blue = 0;static int Green = 1;static int Red = 2;static int Alpha = 3;int main(int原创 2017-12-14 14:27:39 · 1405 阅读 · 2 评论 -
framebuffer 保存png, bmp图片
遇到一个需求,在读取/dev/fb0的原始数据并保存为bmp,png图片,并通过命令行格式进行保存. 写的不好,大家可以指点出来,一起讨论. root@imx6qsabresd:~# ./imx6_shot -h usage: ./imx6_shot [-hpb] [FILENAME] imx6 [option]... -p|--png原创 2017-12-15 11:31:38 · 1598 阅读 · 0 评论 -
C++自定义log日记,简单方便使用
直接上代码,经过本人调式过,可以直接拿去使用代码Logger.h//// Created by ts on 18-2-7.//#ifndef __LOGGER__#define __LOGGER__#include #include #include #include #include #include ////// \brief 日志文件的类型///ty原创 2018-02-07 17:43:55 · 3815 阅读 · 2 评论 -
C++实现修改当前进程的名称
本人参考了别人的代码,实现了修改进程的名称:直接编译运行查看就行了#include #include #include #include extern char** environ;void my_initproctitle(char* argv[], char** last);void my_setproctitle(char* argv[], char** las原创 2018-02-07 18:05:59 · 6212 阅读 · 0 评论 -
C语言 数组与指针(一)
数组与指针(一)指针是 C 的精华,如果未能很好地掌握指针,那 C 也基本等于没学。先附上两句话:第一句话:指针就是存放地址的变量。(就是这么简单。)第二句话:指针是指针,数组是数组。(只是它们经常穿着相似的衣服来逗你玩罢了。)轻松一下:(见识一下数组和指针的把戏)1、引用一维数组某个值的方式:(先定义指针p=a)a[2]*(a+2)(&a[原创 2017-08-22 23:21:32 · 416 阅读 · 1 评论 -
Gcc 编译的背后
前言平时在 Linux 下写代码,直接用 gcc -o out in.c 就把代码编译好了,但是这背后到底做了什么呢?如果学习过《编译原理》则不难理解,一般高级语言程序编译的过程莫过于:预处理、编译、汇编、链接。gcc 在后台实际上也经历了这几个过程,可以通过 -v 参数查看它的编译细节,如果想看某个具体的编译过程,则可以分别使用 -E,-S,-c 和 -O,对应的后台工具原创 2017-08-22 21:58:51 · 468 阅读 · 0 评论 -
链接03
讲解的很不错===值得学习GCC 编译的背后http://www.tinylab.org/behind-the-gcc-compiler/转载 2017-08-26 00:30:54 · 225 阅读 · 0 评论 -
C 预处理器
C 预处理器C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把 C 预处理器(C Preprocessor)简写为 CPP。所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。下面列出了所有重要的预处原创 2017-08-21 20:19:49 · 205 阅读 · 0 评论 -
C语言 输入
流流是什么?形象的比喻——水流,文件和程序之间连接一个管道,水流就在之间形成了,自然也就出现了方向:可以流进,也可以流出。便于理解,这么定义流: 流就是一个管道里面有流水,这个管道连接了文件和程序。UNIX系统认为一切皆文件,所有的外部设备都被看做文件。C语言系统定义了三个默认的文件指针:1、stdin 即标准输入文件,与键盘连接。(即把键盘当做文件)2、std原创 2017-08-24 20:10:31 · 278 阅读 · 0 评论 -
C语言 输出
输出fputs用fputs()把一个字符串写入到文件中int fputs (char string, FILE fp) ;功能:把字符串string写入到文件fp中若fp为stdout,则为向屏幕输出。printfint printf ( char const format, …… ) ;int fprintf ( FILE fp, char con原创 2017-08-24 20:40:33 · 1402 阅读 · 0 评论 -
C语言 一些不安全的库函数
那些不安全的库函数C 和 C++ 不能够自动地做边界检查,边界检查的代价是效率。一般来讲,C 在大多数情况下注重效率。然而,获得效率的代价是,C 程序员必须十分警觉以避免缓冲区溢出问题。C语言标准库中的许多字符串处理和IO流读取函数是导致缓冲区溢出的罪魁祸首。我们有必要了解这些函数,在编程中多加小心。一、字符串处理函数strcpy()strcpy()原创 2017-08-24 22:42:33 · 500 阅读 · 0 评论 -
setjmp 和 longjmp 使用方法
我们都知道要想在一个函数内进行跳转,可以使用 goto 语句(不知怎么该语句在中国学生眼中就是臭名昭著,几乎所有国内教材都一刀切地教大家尽量不要使用它,但在我看来,这根本不是语言的问题,而是使用该语言的人,看看 Linux 内核中遍地是 goto 语句的应用吧!),但如果从一个函数内跳转到另一个函数的某处,goto 是不能完成的,那该如何实现呢?函数间跳转原理我们要实现的一转载 2017-08-24 23:13:59 · 377 阅读 · 0 评论 -
C 头文件
C 头文件头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它。前面我们已经看过 stdio.h 头文件,它是编译器自带的头文件。引用头文件相当于复制头文件的内容,但是我们不会直接在源文件中复制头文件的内原创 2017-08-21 22:05:04 · 202 阅读 · 0 评论 -
C 强制类型转换
C 强制类型转换强制类型转换是把变量从一种类型转换为另一种数据类型。例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型,如下所示:(type_name) expression请看下面的实例,使用强制类型转换运算符把一个整数变量除以另一个整数变量,得到原创 2017-08-21 22:20:04 · 378 阅读 · 0 评论 -
C 错误处理
C 错误处理C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码 errno,该错误代码是全局变量,表示在函数调用期间发生了错误。您可以在 头文件中找到各种各样的错误代码。所以,C 程序员可以通过检查返回值,然后根据返回值决定采取哪种适原创 2017-08-21 22:23:14 · 236 阅读 · 0 评论 -
C 可变参数
C 可变参数有时,您可能会碰到这样的情况,您希望函数带有可变数量的参数,而不是预定义数量的参数。C 语言为这种情况提供了一个解决方案,它允许您定义一个函数,能根据具体的需求接受可变数量的参数。下面的实例演示了这种函数的定义。int func(int, ... ) { . . .}int main(){ func(1, 2, 3); func(1,原创 2017-08-21 22:35:33 · 306 阅读 · 0 评论 -
C 内存管理
C 内存管理本章将讲解 C 中的动态内存管理。C 语言为内存的分配和管理提供了几个函数。这些函数可以在 头文件中找到。序号函数和描述1void *calloc(int num, int size);该函数分配一个带有 function allocates an array of num 个元素的数组,每个元素的大小为 size原创 2017-08-21 23:06:11 · 175 阅读 · 0 评论 -
C 命令行参数
C 命令行参数执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。命令行参数是使用 main() 函数参数来处理的,其中,argc 是指传入参数的个数,argv[] 是一个指针数组,指向传递给程序的每个参数。下面是一个简单的实例,检查命令行是否有提供参数,并根据参数执行原创 2017-08-21 23:09:10 · 902 阅读 · 0 评论 -
Gcc 编译的背后--预处理
预处理简述预处理是 C 语言程序从源代码变成可执行程序的第一步,主要是 C 语言编译器对各种预处理命令进行处理,包括头文件的包含、宏定义的扩展、条件编译的选择等。以前没怎么“深入”预处理,脑子对这些东西总是很模糊,只记得在编译的基本过程(词法分析、语法分析)之前还需要对源代码中的宏定义、文件包含、条件编译等命令进行处理。这三类的指令很常见,主要有 #define,#incl原创 2017-08-25 22:43:05 · 587 阅读 · 0 评论 -
readelf命令详解
readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。 这个程序和objdump提供的功能类似,但是它显示的信息更为具体,并且转载 2017-08-25 23:05:49 · 1566 阅读 · 0 评论 -
ELF 文件的结构01
目标代码不再是普通的文本格式,无法直接通过文本编辑器浏览,需要一些专门的工具。如果想了解更多目标代码的细节,区分 relocatable(可重定位)、executable(可执行)、shared libarary(共享库)的不同,我们得设法了解目标代码的组织方式和相关的阅读和分析工具。下面主要介绍这部分内容。BFD is a package which allows applica原创 2017-08-25 23:56:13 · 217 阅读 · 0 评论 -
va_start(),va_end()函数应用
原理解释:VA_LIST 是在C语言中解决变参问题的一组宏,在头文件下。VA_LIST的用法: (1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针 (2)然后用VA_START宏初始化变量刚定义的VA_LIST变量,这个宏的第二个参数是第一个可变参数的前一个参数,是一个固定的参数。 (3)然后用VA_AR转载 2017-08-14 23:31:10 · 164 阅读 · 0 评论 -
ELF 主体:节区02
下面来看看 ELF 文件的主体内容:节区(Section)。ELF 文件具有很大的灵活性,它通过文件头组织整个文件的总体结构,通过节区表 (Section Headers Table)和程序头(Program Headers Table 或者叫段表)来分别描述可重定位文件和可执行文件。但不管是哪种类型,它们都需要它们的主体,即各种节区。在可重定位文件中,节区表描述的就是各种节区本身转载 2017-08-26 00:06:04 · 583 阅读 · 0 评论 -
linux 配置文件读写解析
有时我们自己写Linux下配置文件,需要手动解析,然后使得程序可以配置的类似于以下格式 simple.conf: ## Sample configuration file ip=192.16.31.2port=22Desktop-Picture = /usr/images/earth.jpg Position = Centered直接上代码解析:头文件ccl.h#ifndef CLL...原创 2018-03-21 20:52:03 · 5943 阅读 · 1 评论