C/C++
文章平均质量分 90
_佚名-2022_
道虽迩,不行不至;事虽小,不为不成。
展开
-
?C++编译链接时的一个小问题
1.C++标准支持分别编译,就是每一个cpp源文件都可以单独编译通过。所以在每个cpp源文件编译单位中,任何名字(无论是函数名还是变量名,或者...)都要先声明或者定义,再使用。 2.链接过程是将1中每个cpp源文件经过编译器生成的目标文件,进行链接形成一个可执行文件。 Question:分别编译在Windows平台上符合,可以再Linux平台下,有点小问题,如下:/**t原创 2013-12-05 13:15:02 · 594 阅读 · 0 评论 -
一个简单的c/c++程序
1.int main(){ return 0;}备注:(1)ANSI C/C++规定,main方法的返回值类型为int(2)return 0代表main成功执行,return非零值表示main执行失败。如果是return 0,那么可以省略,os调用main时自动会在最后一句后面插入return 0.原创 2016-02-18 00:17:12 · 804 阅读 · 0 评论 -
C/C++中的指针
1.指针指针是指向某一个对象的东东,它的内容是一段地址,这个地址所在的位置存储了某个对象。 2.指针的定义type *var;int *pa;double *pb;string *pc;3.指针数组与数据指针(1)数据指针int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n.(2)指针数组int原创 2016-10-04 00:01:01 · 284 阅读 · 0 评论 -
C/C++中使用static关键字定义或声明静态对象
在C/C++中使用static关键字来定义或声明静态对象,主要有以下的应用场景:(1)static修饰局部对象,使其成为静态局部对象将一个函数中定义的变量声明为static对象,那么在函数被多次调用的过程中,静态局部对象会持续存在并保持它的值。(2)static修饰类成员,使其成为类静态成员static即可以修饰类成员变量,也可以修改类成员函数,是他们成为类静态成员。类静态成员是与原创 2016-10-04 00:27:33 · 2494 阅读 · 0 评论 -
C/C++编译预处理
1.C/C++编译预处理 预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置。 预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。原创 2016-10-03 03:27:48 · 460 阅读 · 0 评论 -
C/C++中类的声明和定义
1.类的声明和定义以类Sales_item的定义来举例说明://Sales_item.h文件//类Sales_item的声明class Sales_item {public: //类Sales_item的构造函数 Sales_item(): units_sold(0), revenue(0.0) {} //类成员函数avg_price的声明 double avg_price(原创 2016-10-04 01:42:04 · 7896 阅读 · 0 评论 -
C/C++中的类型别名关键字typedef
typedef用来定义已有类型的同义词。例如:typedef double wages;struct ngx_buf_s { u_char *pos; u_char *last; off_t file_pos; off_t file_last;};typedef structn原创 2016-10-04 02:23:29 · 543 阅读 · 0 评论 -
C++中类继承和虚函数
1.类继承的书写格式class classname: access-labelbase-class { … };access-label是public、protected或private,base-class是基类或父类。classname是派生类或子类。 2.虚函数在C++中,基类中定义为virutal的函数是基类期望派生类重新定义的,被关键字virtual修饰的成员函数,称原创 2016-10-04 02:04:50 · 463 阅读 · 0 评论 -
C++中的模板与泛型编程学习
1.模板与泛型编程C++中的模板包括函数模板和类模板两种。在编程中,我们使用模板,就可以独立于任何特定类型的方式来编写代码,例如标准模板库中的vector容器,就是一个模板类,通过vector,vector等,就可以用vector来包含任何类型的数据。使用类模板或函数模板的编程,我们成为是泛型编程,或模板编程。 2.函数模板的定义和使用(1)函数模板的定义template i原创 2016-11-12 23:01:47 · 444 阅读 · 0 评论 -
linux中gdb的使用方法
1.gdb GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能: (1)启动你原创 2015-06-22 20:20:46 · 1006 阅读 · 0 评论 -
Unix like下gcc编译连接c/c++使用方法小结
1.gccgcc是由GNU计划维护的,是一个在Unix like系统下进行编译和连接的工具。原创 2014-08-09 11:20:18 · 1059 阅读 · 0 评论 -
C/C++中数组的定义和使用
1.一维数组的定义和使用int elems[4] = {12, 34, 56,78};char elems[] = "BEIJING";备注:在程序中使用数组名时,该名字会自动转换为指向数组第一个元素的指针。 2.多维数组的定义和使用严格来说,C++中没有多维数组,通常所说的多维数组其实就是数组的数组。用这一点来理解多维数组很重要。int elems[3][4] = {原创 2016-10-03 23:29:17 · 5763 阅读 · 0 评论 -
C/C++中的字面值常量、常量以及变量
1.字面值常量在C/C++中,4、3.1415926、0x24、"BEIJING"等等,都称为字面值常量。称之为字面值是因为只能用它的值来称呼它,称为为常量是因为它的值不能被修改。举例说明:20、0x14等是整型字面值常量;3.1415926等是浮点字面值常量;true/false是布尔型字面值常量;"BEIJING"、"SHANGHAI"等是字符串字面值常量。值得注意的是,为原创 2016-10-03 21:39:39 · 2779 阅读 · 0 评论 -
Google Protocol Buffer学习笔记
1.Google Protocol Buffer 通常所说的pb格式,就是指Google Protocol Buffer,简写为protobuf. 它是由Google提出的一个东东。Protocol Buffers是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的原创 2014-07-26 17:22:31 · 646 阅读 · 0 评论 -
linux下makefile配置文件及make工具的使用
1.make工具及makefile文件 make是一个命令工具,它解释Makefile 中的指令(应该说是规则)。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。Makefile(在其它的系原创 2016-01-02 20:43:31 · 2507 阅读 · 0 评论 -
unix like编程中的signal()函数
1.signal函数函数原型如下:sig_t signal(int signum,sig_t handler);参数说明: 第一个参数signum指明了所要处理的信号类型,它可以是除了SIGKILL和SIGSTOP外的任何一种信号。 第二个参数handler描述了与信号关联的动作,它可以取以下三种值: (1)一个返回值为正数的函数地址 此函数必须在signal()转载 2016-02-23 01:33:09 · 340 阅读 · 0 评论 -
编译器gcc与g++的区别
gcc开始时候的名字是GNU c compiler, 就是说设计的初衷是用来编译C语言的。 后来,不断的拓展发展成了 gnu compiler collection。如果你用gcc编译过fortran代码的话,就会对后者理解的比较深刻了。g++的设计目标是用来编译C++程序代码的,如期名字所暗示的那样。因此,g++是一个c++ compiler,gcc是 compiler collection。所转载 2016-06-12 01:16:23 · 1692 阅读 · 0 评论 -
select函数的使用举例
#include #include #include #include #include #include int main() { char buffer[128]; int result, nread; fd_set inputs, testfds; struct timeval timeout; FD_ZERO(&转载 2016-06-12 01:51:57 · 717 阅读 · 0 评论 -
C/C++的内存布局
C/C++的内存布局通常有两种说法:一种是堆、栈、全局/静态存储区、自由存储区和常量存储区。另外一种是堆、栈、全局/静态存储区、字符串常量区和代码区。其实更详细准确的说法如下:1 .rodata段:存放只读数据,比如printf语句中的格式字符串和开关语句的跳转表。也就是你所说的常量区。例如,全局作用域中的 const int ival = 10,ival存放在.rodata段转载 2016-06-06 00:34:23 · 431 阅读 · 0 评论 -
Google gflags库(解析命令行参数)
google gflags是google使用的一个开源库,用于解析命令行标记。目前的gflags有C++和Python两个版本。本文主要介绍gflags的C++版本使用方法。命令行标记是指用户在运行可执行程序时,在命令行中指定的参数。例如,对于命令:[plain] view plain copyfgrep -l -f /var/tmp/foo转载 2016-07-04 01:20:19 · 1972 阅读 · 0 评论 -
C++中的命令空间NameSpace定义和使用
1.NameSpace 在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。2.NameSpace的定义 在C++原创 2015-11-08 23:27:08 · 4956 阅读 · 0 评论 -
C/C++中的作用域种类
C/C++中的作用域的种类有:(1)全局作用域(2)局部作用域(3)语句作用域,比如在for语句中定义的变量(4)类作用域(5)命名空间作用域原创 2016-10-03 21:42:33 · 2368 阅读 · 0 评论 -
C++中的字符串
C++中有两种字符串,一种是从C语言继承的C风格字符串,另一种是标准库中的string类型。(1)C风格字符串C风格字符串就是以'\0'字符为最后一个元素的字符数组。char str[] = {'C', '+', '+', '\0'};char str[] = "C++";const char *str = "C++";上面都是C风格的字符串。(2)标准库类型string原创 2016-10-03 22:08:22 · 326 阅读 · 0 评论 -
c函数调用过程原理及函数栈帧分析
今天突然想分析一下函数在相互调用过程中栈帧的变化,还是想尽量以比较清晰的思路把这一过程描述出来,关于c函数调用原理的理解是很重要的。1.关于栈 首先必须明确一点也是非常重要的一点,栈是向下生长的,所谓向下生长是指从内存高地址->低地址的路径延伸,那么就很明显了,栈有栈底和栈顶,那么栈顶的地址要比栈底低。对x86体系的CPU而言,其中---> 寄存器ebp(base po...转载 2018-04-02 00:14:41 · 1310 阅读 · 1 评论