cc++
文章平均质量分 70
酱油p
这个作者很懒,什么都没留下…
展开
-
c/c++中static的作用
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variable转载 2013-03-21 10:47:39 · 371 阅读 · 0 评论 -
【c语言基础必备】memset详细研究与延伸
函数原型:void *memset(void *s, int ch, size_t n);函数解释:将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。直接举例说明:如下demo是可以的,能把数组中的元素原创 2014-01-04 14:49:16 · 441 阅读 · 0 评论 -
【VIM必备】VIM配置成C/C++ IDE的经验——ctags不能查找系统文件
经过几天的试验与google,终于配置将VIM配置成一个C/C++的IDE,用到的插件为Ctags,Winmanager,NERDTree,OmniCppComplete,以及MiniBufExplorer,这些插件都可以再vim的官方网站的中下载到,具体是实现是参照如下几篇文章:1)http://blog.csdn.net/klarclm/article/details/7932521原创 2013-10-27 16:30:59 · 1235 阅读 · 0 评论 -
【c语言基础必备】gcc编译器的简单编译
一. 常用编译命令选项假设源程序文件名为test.c。1. 无选项编译链接用法:#gcc test.c作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。2. 选项 -o用法:#gcc test.c -o test作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。3原创 2014-01-07 16:15:08 · 466 阅读 · 0 评论 -
【c语言基础必备】makefile经典教材
http://blog.csdn.net/ruglcc/article/details/7814546转载 2014-01-07 16:22:02 · 356 阅读 · 0 评论 -
【unix环境】unix环境高级编程——环境配置
背景说明:学习《UNIX环境高级编程》,里面的示例程序用到了作者写的模块。把第一个示例代码敲入,结果当头一棒。咦,怎么编不过去。网上找资料发现好人不少,问题终于解决。特此,把我的解决步骤附上如下。^_^参考文章:http://linux.chinaunix.net/techdoc/system/2009/02/08/1061504.shtmlhttp://www.l转载 2014-01-08 15:36:46 · 411 阅读 · 0 评论 -
linux套接字编程
套接字连接的过程如同(客户)打一个电话到一个大公司,接线员(服务器进程)接听电话并把它转接到你要找的部门,然后再从那里转到你要找的人(服务器套接字),然后接线员(服务器进程)再继续转接其它(客户)的电话。 套接字有本地套接字和网络套接字两种。本地套接字的名字是Linux文件系统中的文件名,一般放在/tmp或/usr/tmp目录中;网络套接字的名字是与客户连接的特定网络有关的服务标识符原创 2014-01-08 10:09:47 · 406 阅读 · 0 评论 -
【apue】dup,dup2的剖析
dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status Flag和读写位置。请注意区转载 2014-01-09 16:01:23 · 386 阅读 · 0 评论 -
【apue】习题3.2:写一个与dup2功能相同的函数,要求不使用fcntl函数,并且要有正确的错误处理
思路:要产生新的fd,则要使用dup()函数,每调用一次dup,就会产生一个最小的newfd,循环调用dup,知道newfd到达需求的fd。原创 2014-01-10 11:18:42 · 418 阅读 · 0 评论 -
【c语言基础必备】结构体强制转换的思考——与普通类型比较
在C语言中,结构体和int等类型一样,都是数据类型。其他类型怎么转换,结构体就怎么转换,没有什么特殊的地方。楼主可能想知道的不是结构体怎样强制转换这个问题吧,猜测,楼主想知道如下几个问题:如果将一个结构体强制类型转换为另一个结构体(或者类型),那这个结构体的成员会怎样了?如果将一个结构体强制类型转换为另一个结构体(或者类型),那么这个结构体成员的数值又会是什么了?解答:1、结构原创 2013-12-31 10:21:21 · 547 阅读 · 0 评论 -
【c语言基础必备】标准库函数fgetc() 的理解
#include int fgetc(FILE *fp);" fegtc() 函数从输入stream中返回当前位置的下一个字符,并且将文件的位置指示符加1,并将读取的字符按照unsigned char 形转换为整数以作为返回值。fgetc()在读取到文件的末尾时,返回值为EOF。”思考:既然fgetc()的功能是从文件中读取字符(char),为何在上面的定义中,它的返回值为in原创 2014-01-14 10:33:42 · 692 阅读 · 0 评论 -
【c语言基础必备】用指针作为参数来申请内存
参数策略如果函数的参数是一个指针,不要指望用该指针去动态申请内存。如下:void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}void Test(void){ char *str = NULL; GetMemory(str, 100); //st转载 2014-03-05 10:21:49 · 808 阅读 · 0 评论 -
【c语言基础必备】prinf格式化输出
1.调用格式为 printf("格式化字符串>", 参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符, 用来确定输出内容格式。参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想不到转载 2014-04-16 12:43:41 · 683 阅读 · 0 评论 -
【c语言基础必备】关于函数strtok和strtok_r的使用要点和实现原理
strtok函数的使用是一个老生常谈的问题了。该函数的作用很大,争议也很大。以下的表述可能与一些资料有区别或者说与你原来的认识有差异,因此,我尽量以实验为证。交代一下实验环境是必要的,winxp+vc6.0,一个极端平民化的实验环境。本文中使用的源代码大部分来自于网络,我稍加修改作为例证。当然,本人水平有限,有不妥之处在所难免,各位见谅的同时不妨多做实验,以实验为证。strtok的函数原型转载 2014-04-02 15:19:50 · 605 阅读 · 0 评论 -
【c语言基础必备】c语言struct中int data[0]的使用——c语言中的变长数组
今天在看一段代码时出现了用结构体实现变长数组的写法,一开始因为忘记了这种技术,所以老觉得作者的源码有误,最后经过我深思之后,终于想起以前看过的用struct实现变长数组的技术。下面是我在网上找到的一篇讲解很清楚的文章。在实际的编程中间,我们通常会要设计到变长数组,但是C语言不支持bstruct MyData { int nLen; char data[0];};在结构中,dat原创 2014-05-19 21:08:59 · 1901 阅读 · 0 评论 -
unix套接字地址结构
#include /**IPV4套接字地址结构**/struct in_addr{ in_addr s_addr;//32位IPV4地址,这是无符号整数,网络字节序};/*POSIX只关注sin_family,sin_port,sin_addr,所有网络套接字地质结构都至少16字节*/struct sockaddr_in{ uint8_t sin_len;//无符号八位整形,转载 2014-01-03 16:02:49 · 394 阅读 · 0 评论 -
【c语言基础必备】指针强制类型转换的思考
说不上是思考,只是想谈谈自己对指针的强制类型转换的理解。之所以写出来,一方面是自己做一个笔记,另一方面也可以和大家探讨探讨,更重要的也是向大家学习。以前总是记不住指针的强制类型转换的格式,归根结底还是自己对这个知识点不够理解。 什么是指针变量 指针变量,本质上是一个变量,只是它是存放地址的变量,指针的类型代表的是它所指向的变量的类型。因此就有了指向整型、字符型、浮点转载 2013-12-30 15:40:42 · 457 阅读 · 0 评论 -
【c语言基础必备】内存字节对齐
一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数转载 2013-12-31 10:22:45 · 328 阅读 · 0 评论 -
try-catch-finally
try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 } catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行 } finally { //不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 fin原创 2013-03-23 15:34:59 · 484 阅读 · 0 评论 -
匈牙利表示法
原创 2013-05-10 16:20:18 · 382 阅读 · 0 评论 -
windows程序内部运行机制
windows API:当我们在写程序时,经常会用到一些库函数来辅助完成某些功能,比如C库函数中的printf函数,或者C++中的cout函数,但是这些函数都是你所使用的编译器厂商提供的,在windows平台下,也有类似的函数可供调用,这些函数式由windows系统本身提供的。(PS:这些函数就是windows API) 窗口与句柄:在windows程序中,窗口是通过窗口句柄(HW原创 2013-05-10 16:00:24 · 475 阅读 · 0 评论 -
归并排序
#include #include void MSort(int a[],int temp[],int low,int high);void MergeSort(int *a,int len) //归并排序算法{ int *TR = (int *)malloc(sizeof(int) * len); //动态分配一个额外的存储空间 MSort(a,TR,0,len-1); //分裂然后转载 2013-09-03 10:26:24 · 363 阅读 · 0 评论 -
python中list的产生形式
1)直接使用for语句循环——比较常规的方式>>> squares =[]>>> for x in range(10):... squares.append(x**2)...>>> squares[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 2)直接使用for语句squares = [x**2for x in原创 2013-10-20 11:09:24 · 464 阅读 · 0 评论 -
python中的tuple
1)tuple的定义方式tuple一般的创建方式如下所示,直接把多个值赋值给t>>> t = 12345, 54321,'hello!'>>> t[0]12345>>> t(12345, 54321, 'hello!') 如果tuple中只有一个元素,例如只有 'hello!'>>> t= 'hello!',原创 2013-10-21 10:27:56 · 600 阅读 · 0 评论 -
Linux 管道通信
一、定义 管道是单向的、先进先出的。它将一个程序的输入和另一个程序的输出连接起来。数据被一个进程读出后,将被从管道中删除。分为无名和有名管道两种。前者用于父进程和子进程间的通信,后者用于同一系统的两个进程间通信。 二、无名管道 int pipe(int fd[2]); 其中,fd[0]用于读管道,fd[1]用于写管道。若成功则返回零,否则返回-1,错转载 2013-10-23 15:56:21 · 498 阅读 · 0 评论 -
【c语言基础必备】全局变量与局部变量
全局变量,也称外部变量,在函数体外定义,不是哪一个函数所特有的。全局变量又可以分为外部全局变量和静态全局变量,它们之间的最大区别在于,使用static 存储类别的全局变量只能在被定义的源程序文件中使用,而使用extern 存储类别的全局变量不仅可以在被定义的源程序文件中使用,还可以被其他源文件中的函数引用。如果要在函数中使用全局变量,那么通常需要作全局变量说明。只有在函数内经过说明的全局变量才能使原创 2013-11-26 10:05:52 · 424 阅读 · 0 评论 -
如何理解*(void**)b
#include void main(){ int*p; inta=2; unsignedlong b=1245048; p=&a; printf("%d/n",*p); printf("%p/n",&a); printf("%d/n",&a); printf("转载 2013-11-12 15:16:38 · 421 阅读 · 0 评论 -
【c语言基础必备】变量生存区与作用域
一、生存区 不少人对于生存期有着一种错误的理解,认为变量离开了它的作用域,其生存期就结束了。产生这种误解的原因,是对于生存期的概念理解不深刻。所谓的生存期,其实是指变量占用内存或者寄存器的时长。根据变量存储类别的不同,在编译的时候,变量将被存放到动态存储区或静态存储区中,所以其生存期是由声明时的存储类别所决定的。 (1)首先我们讲一下静态存储区与动态存储区原创 2013-11-26 10:33:46 · 560 阅读 · 0 评论 -
【c语言基础必备】指针数组 and 数组指针
对于指针数组和数组指针,单从字面上似乎很难分清它们是什么,先来看看指针数组和数组指针各自的定义形式。 指针数组的定义形式为:(是一个数组) 类型名 * 数组名[ 数组长度];如: int *p[8]; 数组指针的定义形式为:(是一个指针) 类型名 (* 指针名)[ 数组长度];如:原创 2013-11-29 10:37:16 · 665 阅读 · 0 评论 -
【c语言基础必备】共用体union
共用体是C 语言的另外一种构造类型,与前面介绍的结构体类似。共用体也由基本数据结构组合而成,但是共用体和结构体却有本质区别,因为结构体中的每个成员都占用存储单元,所以结构体所占用的内存大小为所有成员各自占用的内存大小之和,而共用体占用的内存大小由其成员中占用内存最大的那个决定,所有的成员都占用同一个起始地址和同一段内存空间。对于共用体变量,在某一时刻,只能存储其某一成员的信息。共用体类型的定义原创 2013-12-06 15:33:28 · 634 阅读 · 0 评论 -
【c语言基础必备】c程序的存储空间布局
一、正文段。可执行程序在存储空间的的副本,cpu执行的机器指令部分。二、初始化的数据段。它包含明确地赋初值的变量。如: int a = 1; 此变量放于数据段。三、未初始化的数据段。 内核将此段中的数据初始化为0或者空指针。出现在任何函数外的c声明 ,long sum[1000];此变量存放在非初始化数据段中。四、栈。每次函数调用时,其返回地址以及调用者的环境信息都存放在栈中。最近被调原创 2013-11-15 15:11:07 · 690 阅读 · 0 评论 -
【c语言基础必备】指针变量的相关问题
懂得C 语言的人都知道,C 语言之所以强大且具有自由性,主要体现在对指针的灵活运用上。因此,说指针是C 语言的灵魂一点都不为过。既然指针如此重要,那么指针究竟是什么呢?在回答这个问题之前,我们先通过下面一段代码来看看指针的使用。#include int main(){ int a=2; int *pa; char b='t'; char *pb; pa=&a; pb=&b;原创 2013-11-28 20:45:34 · 706 阅读 · 0 评论 -
[vim]我的makefile
.SUFFIXES:.c .o //.c和.o建立关联CC=g++SRCS=hello.c\ add.c //同时编译两个.c文件OBJS=$(SRCS:.c=.o) //OBJS=hello.o add.oEXEC=hellostart:$(OBJS)原创 2015-02-03 09:45:31 · 252 阅读 · 0 评论