小说网 找小说 无限小说 烟雨红尘 幻想小说 酷文学 深夜书屋

07 2014 档案

Unix/Linux环境C编程入门教程(42) 终端控制篇
摘要:函数介绍 getopt(分析命令行参数) 相关函数 表头文件 #include 定义函数 int getopt(int argc,char * const argv[ ],const char * opts... 阅读全文

posted @ 2014-07-31 23:20 牛栏山1 阅读(138) 评论(0) 推荐(0)

Red Hat Enterprise Linux 7的新功能
摘要:简介红帽最新版本的旗舰平台交付显著增强的可用性、 性能和可靠性。 丰富的新功能为架构、 系统管理员和开发人员提供所需的资源以更高效地进行创新和管理。架构师: 红帽® 企业 Linux® 7 适合您选择的任意基础架构, 它可以高效地与其他操作环境、 身份验证和管理系统集成到一起。 无论您是要构建... 阅读全文

posted @ 2014-07-30 23:36 牛栏山1 阅读(259) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(41) C语言库函数的文件操作详解
摘要:上一篇博客我们讲解了如何使用Linux提供的文件操作函数,本文主要讲解使用C语言提供的文件操作的库函数。1.函数介绍 ... 阅读全文

posted @ 2014-07-29 22:22 牛栏山1 阅读(134) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(40) 初识文件操作
摘要:1.函数介绍 close(关闭文件) 相关函数 open,fcntl,shutdown,unlink,fclose 表头文件 #include 定义函数 ... 阅读全文

posted @ 2014-07-28 23:44 牛栏山1 阅读(122) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(39) shell命令之系统管理
摘要:df命令用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况。命令的使用格式如下:df [选项]常用参数及含义如下表所示。df -a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统。df -h:以容易理解的格式输出文件系统大小,例如124KB、... 阅读全文

posted @ 2014-07-27 18:38 牛栏山1 阅读(149) 评论(0) 推荐(0)

类模板的定义和使用
摘要:上次我们已经讲述了使用类模板的好处,今天我们来讲解一下如何定义和使用类模板? 类模板的定义和类的定义很相似,唯一不同的地方是类模板需要使用template关键字来引出类模板需要使用的抽象类型。 类模板定义的语法大致如下: template class 模板类名 ... 阅读全文

posted @ 2014-07-26 13:02 牛栏山1 阅读(274) 评论(0) 推荐(0)

Linux系统编程(24)——信号的生命周期
摘要:信号生命周期为从信号发送到信号处理函数的执行完毕。对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生;信号在进程中注册完毕;信号在进程中的注销完毕;信号处理函数执行完毕。相邻两个事件的时间间隔构成信号生命周期的一... 阅读全文

posted @ 2014-07-26 11:11 牛栏山1 阅读(203) 评论(0) 推荐(0)

Linux系统编程(23)——信号的阻塞
摘要:实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是... 阅读全文

posted @ 2014-07-26 11:10 牛栏山1 阅读(132) 评论(0) 推荐(0)

Linux系统编程(18)——正则表达式实用举例
摘要:匹配特定字符串:只能输入长度为3的字符:"^.{3}$"。只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。只能输入由数字和26个英文字母组成的字符串:... 阅读全文

posted @ 2014-07-26 11:08 牛栏山1 阅读(168) 评论(0) 推荐(0)

Linux系统编程(22)——响应信号
摘要:进程对信号的响应进程可以通过三种方式来响应一个信号:1、忽略信号,即对信号不做任何处理,其中,有两个信号不能忽略:SIGKILL及SIGSTOP;2、捕捉信号。定义信号处理函数,当信号发生时,执行相应的处理函数;3、执行缺省操作,Linux对每种信号都规定了默认操作。注意,进程对实时信号的缺省反应... 阅读全文

posted @ 2014-07-26 11:07 牛栏山1 阅读(170) 评论(0) 推荐(0)

Linux系统编程(21)——信号的产生
摘要:1、通过终端按键产生信号通过上一篇我们知道了SIGINT的默认处理动作是终止进程,SIGQUIT的默认处理动作是终止进程并且Core Dump,现在我们来验证一下。 首先解释什么是Core Dump。当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部保存到磁盘上,文件名通常是core,这... 阅读全文

posted @ 2014-07-26 11:07 牛栏山1 阅读(116) 评论(0) 推荐(0)

Linux系统编程(20)——信号基本概念
摘要:信号及信号来源信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的... 阅读全文

posted @ 2014-07-26 11:07 牛栏山1 阅读(92) 评论(0) 推荐(0)

Linux系统编程(19)——正则表达式在sed和awk中的使用
摘要:sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出。sed和vi都源于早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的。 sed命令行的基... 阅读全文

posted @ 2014-07-26 11:06 牛栏山1 阅读(158) 评论(0) 推荐(0)

Linux系统编程(17)——正则表达式进阶
摘要:C的变量和Shell脚本变量的定义和使用方法很不相同,表达能力也不相同,C的变量有各种类型,而Shell脚本变量都是字符串。同样道理,各种工具和编程语言所使用的正则表达式规范的语法并不相同,表达能力也各不相同,有的正则表达式规范引入很多扩展,能表达更复杂的模式,但各种正则表达式规范的基本概念都是... 阅读全文

posted @ 2014-07-26 11:05 牛栏山1 阅读(166) 评论(0) 推荐(0)

Linux系统编程(16)——正则表达式入门
摘要:字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等等。字符串是0个或更多个字符的序列。文本也就是文字,字符串。说某个字符串匹配某个正则表达式,通常是指这个字符串里有一部分(或几部分分别)能满足表达式给出的条件。 在编写处理字符串的程序或网页时,经常会有查找符... 阅读全文

posted @ 2014-07-26 11:02 牛栏山1 阅读(121) 评论(0) 推荐(0)

Linux系统编程(15)——shell脚本语法
摘要:Shell字符串字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。单引号 str='this is a string'单引号字符串的限制:单引号里的任何字符都会原样输出,单引号字... 阅读全文

posted @ 2014-07-25 23:37 牛栏山1 阅读(105) 评论(0) 推荐(0)

Linux系统编程(14)——shell常用命令
摘要:1. ls命令 ls命令是列出目录内容(ListDirectory Contents)的意思。运行它就是列出文件夹里的内容,可能是文件也可能是文件夹。 “ls -l”命令已详情模式(longlisting fashion)列出文件夹的内容。 “ls -a”命令会列出文件夹里的所有内容,包括以”.... 阅读全文

posted @ 2014-07-25 23:34 牛栏山1 阅读(115) 评论(0) 推荐(0)

Linux系统编程(13)——Shell的基本语法
摘要:按照惯例,Shell变量由全大写字母加下划线组成,有两种类型的Shell变量:环境变量和本地变量。 环境变量:环境变量可以从父进程传给子进程,因此Shell进程的环境变量可以从当前Shell进程传给fork出来的子进程。用printenv命令可以显示当前Shell进程的环境变量。 本地变量只存在... 阅读全文

posted @ 2014-07-25 23:32 牛栏山1 阅读(120) 评论(0) 推荐(0)

Linux系统编程(12)——shell基础
摘要:Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一... 阅读全文

posted @ 2014-07-25 23:31 牛栏山1 阅读(101) 评论(0) 推荐(0)

Linux系统编程(11)——进程间通信之有名管道
摘要:管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以... 阅读全文

posted @ 2014-07-25 23:31 牛栏山1 阅读(107) 评论(0) 推荐(0)

LLinux系统编程(10)——进程间通信之管道
摘要:管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,这是它与有名管道的最大区别。有名管道叫named pipe或者FIFO(先进先出)。 管道具有以下特点:1、管道是半双工的,数据只能向一个方向流动... 阅读全文

posted @ 2014-07-25 23:30 牛栏山1 阅读(149) 评论(0) 推荐(0)

Linux系统编程(9)—— 进程之进程控制函数exec系列函数
摘要:在Linux中,并不存在exec()函数,exec指的是一组函数,一共有6个,分别是:#include extern char **environ;int execl(const char *path, const char*arg, ...);int execlp(const char *fi... 阅读全文

posted @ 2014-07-25 23:29 牛栏山1 阅读(172) 评论(0) 推荐(0)

Linux系统编程(8)—— 进程之进程控制函数fork
摘要:fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数... 阅读全文

posted @ 2014-07-25 23:28 牛栏山1 阅读(150) 评论(0) 推荐(0)

Linux系统编程(7)—— 进程之进程概述
摘要:我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。现在我们全面了解一下其中都有哪些信息。 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。进程的状态,有运行、挂起、停止、... 阅读全文

posted @ 2014-07-24 14:58 牛栏山1 阅读(86) 评论(0) 推荐(0)

Linux系统编程(6)——文件系统
摘要:计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新... 阅读全文

posted @ 2014-07-24 14:56 牛栏山1 阅读(130) 评论(0) 推荐(0)

Linux系统编程(5)——文件与IO之mmap函数
摘要:mmap系统调用它本身提供了不同于一般对普通文件的访问方式,进程可以像读写内存一样对普通文件的操作。而Posix或系统V的共享内存IPC则纯粹用于共享目的,mmap()实现共享内存也是其主要应用之一。mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进... 阅读全文

posted @ 2014-07-24 14:52 牛栏山1 阅读(130) 评论(0) 推荐(0)

Linux系统编程(4)——文件与IO之ioctl函数
摘要:ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的参数个数如下:int ioctl(int fd, int cmd, …);其中fd就是用户程序打开设备时使用open函数返回的文件标示符,c... 阅读全文

posted @ 2014-07-24 14:52 牛栏山1 阅读(195) 评论(0) 推荐(0)

Linux系统编程(3)——文件与IO之fcntl函数
摘要:linux文件I/O用:open、read、write、lseek以及close函数实现了文件的打开、读写等基本操作。fcntl函数可以根据文件描述词来操作文件。 用法:int fcntl(int fd, int cmd);int fcntl(int fd, int cmd, long arg);... 阅读全文

posted @ 2014-07-24 14:52 牛栏山1 阅读(203) 评论(0) 推荐(0)

Linux系统编程(2)——文件与IO之系统调用与文件IO操作
摘要:系统调用是指操作系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得得操作系统内核提供的特殊服务。在linux中用户程序不能直接访部内核提供的服务。为了更好的保护内核空间,将程序的运行空间分为内核空间和用户空间,他们运行在不同的级上,在逻辑上是相互隔离的。在linux中用... 阅读全文

posted @ 2014-07-24 14:03 牛栏山1 阅读(190) 评论(0) 推荐(0)

Linux系统编程(1)——文件与I/O之C标准I/O函数与系统调用I/O
摘要:Linux系统的I/O也就是一般所说的低级I/O——操作系统提供的基本IO服务,与os绑定,特定于Linux平台。而标准I/O是ANSI C建立的一个标准I/O模型,是一个标准函数包和stdio.h头文件中的定义,具有一定的可移植性。两者一个显著的不同点在于,标准I/O默认采用了缓冲机制,比如调用... 阅读全文

posted @ 2014-07-24 14:00 牛栏山1 阅读(171) 评论(0) 推荐(0)

C语言的本质(38)——makefile之变量
摘要:我们详细看看Makefile中关于变量的语法规则。先看一个简单的例子:foo = $(bar)bar = Huh? all: @echo$(foo)我们执行make将会打出Huh?。当make读到foo = $(bar)时,确定foo的值是$(bar),但并不立即展开$(bar),然后读到b... 阅读全文

posted @ 2014-07-24 13:59 牛栏山1 阅读(246) 评论(0) 推荐(0)

C语言的本质(37)——makefile之隐含规则和模式规则
摘要:Makefile有很多灵活的写法,可以写得更简洁,同时减少出错的可能。本节我们来看看这样一个例子还有哪些改进的余地。 一个目标依赖的所有条件不一定非得写在一条规则中,也可以拆开写,例如:main.o: main.h stack.h maze.h main.o: main.c gcc... 阅读全文

posted @ 2014-07-24 13:57 牛栏山1 阅读(163) 评论(0) 推荐(0)

C语言的本质(36)——makefile基础
摘要:除了Hello World这种极简单的程序之外,一般的程序都是由多个源文件编译链接而成的,这些源文件的处理步骤通常用Makefile来管理。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,... 阅读全文

posted @ 2014-07-24 13:57 牛栏山1 阅读(117) 评论(0) 推荐(0)

C语言的本质(35)——共享库
摘要:库用于将相似函数打包在一个单元中。然后这些单元就可为其他开发人员所共享,并因此有了模块化编程这种说法— 即,从模块中构建程序。Linux支持两种类型的库,每一种库都有各自的优缺点。静态库包含在编译时静态绑定到一个程序的函数。动态库则不同,它是在加载应用程序时被加载的,而且它与应用程序是在运行时绑定... 阅读全文

posted @ 2014-07-24 13:31 牛栏山1 阅读(160) 评论(0) 推荐(0)

C语言的本质(34)——静态库
摘要:库是一种软件组件技术,库里面封装了数据和函数。库的使用可以使程序模块化。Windows系统包括静态链接库(.lib文件)和动态链接库(.dll文件)。Linux通常把库文件存放在/usr/lib或/lib目录下。Linux库文件名由:前缀lib、库名和后缀3部分组成,其中动态链接库以.so最为后缀... 阅读全文

posted @ 2014-07-24 13:29 牛栏山1 阅读(150) 评论(0) 推荐(0)

C语言的本质(33)——GCC编译器入门
摘要:GCC(GNU CompilerCollection,GNU编译器套装),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统采纳为标准的编译器,GCC同样适用于微软的Windo... 阅读全文

posted @ 2014-07-24 13:28 牛栏山1 阅读(188) 评论(0) 推荐(0)

C语言的本质(32)——C语言与汇编之C语言内联汇编
摘要:用C写程序比直接用汇编写程序更简洁,可读性更好,但效率可能不如汇编程序,因为C程序毕竟要经由编译器生成汇编代码,尽管现代编译器的优化已经做得很好了,但还是不如手写的汇编代码。另外,有些平台相关的指令必须手写,在C语言中没有等价的语法,因为C语言的语法和概念是对各种平台的抽象,而各种平台特有的一些东... 阅读全文

posted @ 2014-07-24 13:26 牛栏山1 阅读(221) 评论(0) 推荐(0)

C语言的本质(31)——C语言与汇编之函数调用的本质
摘要:我们一段代码来研究函数调用的过程。首先我们写一段简单的小程序:int sum(int c, int d){ inte = c + d; returne;} int func(int a, int b){ returnsum(a, b);} int m... 阅读全文

posted @ 2014-07-24 13:22 牛栏山1 阅读(152) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(33) 命令和鼠标管理用户和组
摘要:Linux是一个多用户、多任务的实时操作系统,允许多人同时访问计算机, 并同时运行多个任务。UNIX系统具有稳定、高效、安全、方便、功能强大等诸多优点,自20世纪70年代开始便运行在许多大型和小型计算机上。1.用户管理用户是Linux系统工作中重要的一环,用户管理包括用户与组账号的管理。账号管理是... 阅读全文

posted @ 2014-07-23 18:08 牛栏山1 阅读(130) 评论(0) 推荐(0)

为什么使用类模板
摘要:在前面的几章中,我们主要学习了函数模板,今天,我们来看一下类模板。在C++的模板机制中有两种模板,一种是函数模板,描述与数据类型无关的算法;一种是类模板,描述与数据类型无关的数据结构。 相信,现在一定有很多人在问,什么 是类模板? 类模板与函数模板类似,它们的本质都是一种声明,... 阅读全文

posted @ 2014-07-23 16:21 牛栏山1 阅读(139) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(31) 数学函数带你战胜企业面试
摘要:1.函数介绍:abs()acos()asin()atan()atan2()ceil()cos()cosh()exp()frexp()ldexp()log()log10()pow()sin()sinh()sqrt()tan()tanh() abs(计算整型数的绝对值) 相关函数 labs, fa... 阅读全文

posted @ 2014-07-23 15:31 牛栏山1 阅读(131) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(38) shell命令进阶演示
摘要:1.w命令该命令也可以查看登录当前系统的用户信息。与who命令相比,w命令的功能更强大,它不但可以显示当前有哪些用户登录到系统,还可以显示这些用户正在进行的操作,并给出更加详细和科学的统计数据。 w命令的格式如下:w [选项] [用户名]如果w命令携带用户名,则只显示指定用户的信息,否则显... 阅读全文

posted @ 2014-07-23 09:04 牛栏山1 阅读(135) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(37) shell常用命令演练
摘要:cat命令cat命令可以用来查看文件内容。cat [参数] 文件名。grep-指定文件中搜索指定字符内容。Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular ExpressionPrint,表示全... 阅读全文

posted @ 2014-07-22 21:09 牛栏山1 阅读(124) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(36) 初识shell
摘要:1.什么是ShellShell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成... 阅读全文

posted @ 2014-07-22 20:35 牛栏山1 阅读(144) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(35) 编程管理系统中的组
摘要: 组管理相关函数介绍 相关函数 getgid,setgid,setregid 表头文件 #include #include 定义函数 gid_t getegid(void); 函数说明 gete... 阅读全文

posted @ 2014-07-22 20:05 牛栏山1 阅读(205) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(32) 环境变量那些事儿
摘要:1. getenv() putenv()setenv()函数介绍 getenv(取得环境变量内容) 相关函数 putenv,setenv,unsetenv 表头文件 #include 定义函数 char * getenv(const char *name... 阅读全文

posted @ 2014-07-22 19:51 牛栏山1 阅读(87) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(34) 编程管理系统中的用户
摘要:1.用户管理相关函数介绍 geteuid(取得有效的用户识别码) 相关函数 getuid,setreuid,setuid 表头文件 #include #include 定义函数 uid_t geteuid(... 阅读全文

posted @ 2014-07-22 19:31 牛栏山1 阅读(131) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(30) 字符串操作那些事儿
摘要:函数介绍rindex(查找字符串中最后一个出现的指定字符) 相关函数 index,memchr,strchr,strrchr表头文件 #include定义函数 char * rindex( const char *s,int c);函数说明 rindex()用来找出参数s字符串中最后一个出现的参数... 阅读全文

posted @ 2014-07-21 20:00 牛栏山1 阅读(181) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(29) 内存操作那些事儿
摘要:函数介绍 memccpy(拷贝内存内容) 相关函数 bcopy,memcpy,memmove,strcpy,strncpy表头文件 #include定义函数 void * memccpy(void *dest, const void * src, int c,size_t n);函数说明 memc... 阅读全文

posted @ 2014-07-21 14:00 牛栏山1 阅读(124) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(28) 日期时间那些事儿
摘要:记得这个专题第一篇我们写过一个程序运行时间的程序,采用库函数提供的clock()模拟做程序测试。本篇介绍的函数也是和时间相关,但是没有clock的细致,而是提供的系统时间和日期。1.asctime() ctime() gettimeofday() gmtime() localtime() mkti... 阅读全文

posted @ 2014-07-20 19:45 牛栏山1 阅读(121) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(27) 内存那些事儿
摘要:calloc() free() getpagesize() malloc() mmap() munmap()函数介绍calloc(配置内存空间) 相关函数 malloc,free,realloc,brk表头文件 #include 定义函数 void *calloc(size_t nmemb,siz... 阅读全文

posted @ 2014-07-20 17:48 牛栏山1 阅读(129) 评论(0) 推荐(0)

模板函数冲突
摘要:通过前面章节的学习,我们已经知道了什么是函数模板,什么是模板函数?函数模板是模板函数的抽象,模板函数是函数模板的具现。今天,我们主要讲解一下什么是模板函数冲突,模板函数冲突的原因及相应的解决方法。(一)模板函数冲突 为了说清什么是模板函数冲突,我们先从一个例子开始。例1 模板函数冲突... 阅读全文

posted @ 2014-07-20 16:11 牛栏山1 阅读(180) 评论(1) 推荐(1)

C语言的本质(30)——C语言与汇编之ELF文件格式
摘要:ELF(Executable and Linking Format)文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,ELF是一种对象文件的格式,用于定义不同类型的对象文件(Object files)的内容是什么、以及都以怎样的格式去存放这些内容。它有三种不同的类型:1、 可... 阅读全文

posted @ 2014-07-19 15:18 牛栏山1 阅读(254) 评论(0) 推荐(0)

C语言的本质(29)——C语言与汇编之寄存器和寻址方式
摘要:x86的通用寄存器有eax、ebx、ecx、edx、edi、esi。这些寄存器在大多数指令中是可以任意选用的,比如movl指令可以把一个立即数传送到eax中,也可传送到ebx中。但也有一些指令规定只能用其中某些寄存器做某种用途,例如除法指令idivl要求被除数在eax寄存器中,edx寄存器必须是0... 阅读全文

posted @ 2014-07-19 15:13 牛栏山1 阅读(280) 评论(0) 推荐(0)

C语言的本质(27)——C语言与汇编之计算机结构
摘要:现代计算机都是基于冯·诺依曼或哈佛体系结构的,不管是嵌入式系统、个人电脑还是服务器。这种两种体系结构的主要特点是:CPU和内存是计算机的两个主要组成部分,内存中保存着数据和指令,CPU从内存中取指令执行,其中有些指令让CPU做运算,有些指令让CPU读写内存中的数据。 冯·诺依曼结构冯·诺依曼结构... 阅读全文

posted @ 2014-07-19 15:11 牛栏山1 阅读(199) 评论(0) 推荐(0)

C语言的本质(28)——C语言与汇编之用汇编写一个Helloword
摘要:为了更加深入理解C语言的本质,我们需要学习一些汇编相关的知识。作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但是非常重要。因为它能够完成许多其它语言所无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要... 阅读全文

posted @ 2014-07-19 15:09 牛栏山1 阅读(283) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(26) 字符数字那些事儿
摘要:1.gcvt() strtod() strtol() strtoul() toascii() tolower() toupper函数介绍gcvt(将浮点型数转换为字符串,取四舍五入) 相关函数 ecvt,fcvt,sprintf 表头文件 #include 定义函数 ... 阅读全文

posted @ 2014-07-17 23:58 牛栏山1 阅读(89) 评论(0) 推荐(0)

C语言的本质(26)——C标准库之数值字符串转换
摘要:C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。#include int atoi(const char *nptr);atoi把一个字符串开头可以识别成十进制整数的部分转换成int型。参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类... 阅读全文

posted @ 2014-07-17 17:43 牛栏山1 阅读(251) 评论(0) 推荐(0)

C语言的本质(25)——C标准库之内存管理
摘要:程序中需要动态分配一块内存时怎么办呢?我们可以定义一个缓冲区数组,但是这种方法不够灵活,C89要求定义的数组是固定长度的,而程序往往在运行时才知道要动态分配多大的内存,例如: void foo(char *str, int n){ charbuf[?]; strn... 阅读全文

posted @ 2014-07-17 16:25 牛栏山1 阅读(358) 评论(0) 推荐(0)

C语言的本质(24)——C标准库之输入与输出(下)
摘要:4、读写二进制文件C语言还提供了用于整块数据的读写函数。可用来读写一组数据,如一个数组元素,一个结构变量的值等。读数据块函数调用的一般形式为: fread(buffer,size,count,fp);写数据块函数调用的一般形式为: fwrite(buffer,size,count,fp)... 阅读全文

posted @ 2014-07-17 16:19 牛栏山1 阅读(217) 评论(0) 推荐(0)

C语言的本质(23)——C标准库之输入与输出(上)
摘要:1.、文件的基本概念所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件(头文件)等。 文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。从不同的角度可对文件作不同的分类... 阅读全文

posted @ 2014-07-17 16:16 牛栏山1 阅读(223) 评论(0) 推荐(0)

C语言的本质(21)——预处理之三:其它预处理特性及总结
摘要:C标准规定了几个特殊的宏,在不同的地方使用可以自动展开成不同的值,预编译程序对于在源程序中出现的这些串将用合适的值进行替换。这些宏有下面这些: __FILE__ 展开为当前源文件的文件名,是一个字符串__LINE__ 展开为当前代码行的行号,是一个整数__DATE__ 展开为包含当前日期的字符串... 阅读全文

posted @ 2014-07-17 15:39 牛栏山1 阅读(199) 评论(0) 推荐(0)

C语言的本质(22)——C标准库之字符串操作
摘要:编译器、浏览器、Office套件等程序的主要功能都是符号处理,符号处理功能在程序中占相当大的比例,无论多复杂的符号处理都是由各种基本的字符串操作组成的,下面介绍如何用C语言的库函数做字符串初始化、取长度、拷贝、连接、比较、搜索等基本操作。 1. 初始化字符串头文件:string.h函数原型:vo... 阅读全文

posted @ 2014-07-17 15:38 牛栏山1 阅读(295) 评论(0) 推荐(0)

C语言的本质(19)——预处理之一:宏定义
摘要:我们在写代码时已多次使用过以“#”号开头的预处理命令。如包含命令#include,宏定义命令#define等。在源程序中这些命令都放在函数之外,而且一般都放在源文件的前面,它们称为预处理部分。所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能,它... 阅读全文

posted @ 2014-07-17 15:38 牛栏山1 阅读(308) 评论(0) 推荐(0)

C语言的本质(18)——函数的可变参数
摘要:一般而言,在设计函数时会遇到许多数学和逻辑操作,是需要一些可变功能。例如,计算数字串的总和、字符串的联接或其它操作过程。实现一个函数,要求在函数中计算传入的所有参数之和,并输出到屏幕上。这个函数实现起来并不困难,问题在于这个函数的参数个数是不确定的:假设这个函数的名字是sum_n,那么程序员既可以... 阅读全文

posted @ 2014-07-17 15:37 牛栏山1 阅读(185) 评论(0) 推荐(0)

C语言的本质(20)——预处理之二:条件预处理和包含头文件
摘要:我们可以通过定义不同的宏来决定编译程序对哪些代码进行处理。条件编译指令将决定那些代码被编译,而哪些是不被编译的。可以根据表达式的值或者某个特定的宏是否被定义来确定编译条件。条件编译可分为三种情况,按照不同的条件去编译不同的程序部分,因而产生不同的目标文件,这对于程序的移植和调试都非常有用。 1、... 阅读全文

posted @ 2014-07-17 15:36 牛栏山1 阅读(294) 评论(0) 推荐(0)

C语言的本质(17)——回调函数
摘要:如果函数的参数是一个函数指针,我们可以通过这个函数指针传递一个函数的地址给另外一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数(Callback Function)。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应... 阅读全文

posted @ 2014-07-17 15:33 牛栏山1 阅读(176) 评论(0) 推荐(0)

C语言的本质(15)——C语言的函数接口入门
摘要:C语言的本质(15)——C语言的函数接口 函数的调用者和其实现者之间存在一个协议,在调用函数之前,调用者要为实现者提供某些条件,在函数返回时,实现者完成调用者需要的功能。函数接口通过函数名,参数和返回值来描述这个协议,只要函数名和参数名命名合理,参数和返回值的类型定义的准确,调用者仅仅通过函数接口... 阅读全文

posted @ 2014-07-17 15:33 牛栏山1 阅读(364) 评论(0) 推荐(0)

C语言的本质(14)——不完全类型和复杂声明
摘要:ISO 将 C 的类型分为三个不同的集合: 函数、对象和不完全类型三大类。函数类型很明显;对象类型包含其他一切,除非不知道对象的大小。该标准使用术语“对象类型”指定指派的对象必须具有已知大小,注意,除 void 之外的不完全类型也称为对象。对象类型又分为标量类型和非标量类型。枚举类型、字符型和各种... 阅读全文

posted @ 2014-07-17 15:32 牛栏山1 阅读(314) 评论(0) 推荐(0)

C语言的本质(13)——指向指针的指针
摘要:指针可以指向基本类型,也可以指向复合类型,因此一个指针变量存放的可以是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。由于指针变量直接指向变量,所以称为“单级间址”。而如果通过指向指针的指针变量来访问变量则构成“二级间址”。 int i;int *pi = &i;int **ppi =... 阅读全文

posted @ 2014-07-17 15:32 牛栏山1 阅读(259) 评论(0) 推荐(0)

C语言的本质(16)——函数接口的传入参数与传出参数
摘要:如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数),例如strcpy的函数原型为 char *strcpy(char *dest, const char *src);其中src参数是传入参数,dest... 阅读全文

posted @ 2014-07-17 15:31 牛栏山1 阅读(491) 评论(0) 推荐(0)

函数模板的载体-HPP
摘要:在C++中,我们通常将声明放在.h头文件中,将具体的实现代码放在.cpp文件中。但是函数模板通常不这么做,函数模板是将其声明和实现都放在.hpp文件中。hpp是Header Plus Plus的缩写,是专门存放模板文件的格式。可能有人会问,为什么要将函数模板的声明和实现放在一个头文件中?这... 阅读全文

posted @ 2014-07-16 11:35 牛栏山1 阅读(222) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(25) C/C++字符测试那些事儿
摘要:isalnum isalpha isascii iscntrl isdigit isgraph isislower isprint isspace ispunct isupper isxdigit介绍首先这些全部是宏,只不过我们初学者和使用者可以直接把他当作函数用。 isalnum(测试字符是... 阅读全文

posted @ 2014-07-15 15:27 牛栏山1 阅读(169) 评论(0) 推荐(0)

模板函数的静态变量
摘要:在前面的课程中,我们了解了函数模板的定义和使用方法,并知道它在被调用的时候,会根据传进的模板参数生成一个模板函数,模板函数是函数模板的具现。函数模板是模板函数的抽象。 大家都知道,在C++的函数中可以定义一个静态局部变量,这个静态局部变量的生命周期同整个程序的生命周期相同,但是只有在... 阅读全文

posted @ 2014-07-15 12:56 牛栏山1 阅读(486) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(24) MySQL 5.7.4 for Red Hat Enterprise 7(RHEL7)的安装
摘要:远观历史, MySQL的主要目的是为了能够在单处理器核心的商业服务器上运行。如今MySQL的一个变化用户可能不会注意到,那就是甲骨文已经开始重新架构MySQL的代码,使它大量的模块化。如软件解析器,优化和复制功能以模块化的形式被重写。该版本的查询性能得以大幅提升,比 MySQL 5.6 提升 1 ... 阅读全文

posted @ 2014-07-13 11:30 牛栏山1 阅读(119) 评论(0) 推荐(0)

模板参数默认值
摘要:上次我们讲了模板参数自动推导,模板参数自动推导可以让我们调用模板函数和调用普通函数一样方便,但是,如果模板参数列表中存在不能进行自动推导的参数,那么,当我们调用这个模板函数的时候,还需要为它们指定实际的模板参数;那么是否有一种方法,可以帮助我们彻底实现调用模板函数和调用普通函数一样简单呢?... 阅读全文

posted @ 2014-07-12 10:09 牛栏山1 阅读(621) 评论(0) 推荐(0)

模板参数自动推导
摘要:上次,我们看了什么是模板函数,今天,我们就从这个模板函数入手,继而引出一个新的知识点-模板参数自动推导。为了介绍清楚什么是模板参数自动推导,我们先定义几个术语,通过这些术语来描述比较方便,这些术语是:模板形参,模板实参,模板函数形参,模板函数实参。 为了表达明确,我们先来看一下图1,... 阅读全文

posted @ 2014-07-11 12:54 牛栏山1 阅读(400) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(23) 字符数字那些事儿
摘要:1.atoi包含头文件: #include 函数原型: int atoi( const char *str );功能:将字符串str转换成一个整数并返回结果。参数str 以数字开头,当函数从str 中读到非数字字符则结束转换。参数str字符串,如果第一个非空格字符存在,是数字或者正负号... 阅读全文

posted @ 2014-07-10 23:48 牛栏山1 阅读(161) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(22) C/C++如何获取程序的运行时间
摘要:1.问:知道程序运行时间我们可以做什么?在《C++应用程序性能优化》一书中,如果大家读过相信大家一定对性能优化这一块非常上心,文中总是对优化前后的时间对比非常直观给我们一个感受。那么我们如何利用C语言提供的库函数获取一个应用程序的各阶段的运行效率,通过数据分析出该程序的瓶颈并且做出相应的优化。本文... 阅读全文

posted @ 2014-07-09 18:41 牛栏山1 阅读(225) 评论(0) 推荐(0)

如何定义函数模板
摘要:大家好,上次我们讲了模板编程的好处,它的好处主要是实现数据类型和逻辑代码相分离,从而实现代码的高度复用。这次,我们就来看一下如何在C++中定义一个函数模板,通过函数模板实现算法与数据类型相分离。 首先,请让我介绍一下什么是函数模板? 函数模板是C++模板机制中的一种,主要的目标... 阅读全文

posted @ 2014-07-09 12:19 牛栏山1 阅读(269) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(21) 各个系统HelloWorld跑起来效果如何?
摘要:Unix/Linux家族人员众多,我们无法一一讲解如何配置环境。本文选定我们在前面安装的RHEL6 RHEL7 MAC10.9.3 Solaris11如何跑起来helloworld RHEL 6 上的helloworld 1.进入RHEL6 2.鼠标点击右键 点击open in term... 阅读全文

posted @ 2014-07-08 17:33 牛栏山1 阅读(135) 评论(0) 推荐(0)

为什么使用模板
摘要:C++模板编程是泛型编程的实现方式,由于C++中的类型都是强类型,所以导致每一个变量都有一种对应的类型。这样就会出现一个弊端,就是同样一个算法针对不同类型的参数,就要实现多个版本,这样岂不是很麻烦。那么,C++中是否会有一种办法来帮助我们实现算法通用呢?答案是有的,这就是模板编程,模板编程的目的就... 阅读全文

posted @ 2014-07-08 12:26 牛栏山1 阅读(131) 评论(0) 推荐(0)

CC++初学者编程教程(16) 搭建Xcode cocos2dx开发环境
摘要:1.下载cocos2dx,也可以从共享目录复制 2.解压缩 3.进入目录 cd Desktop/cocos2d-x-2.2.0/tools/project-creator/ 4.创建项目 ./create_project.py -p... 阅读全文

posted @ 2014-07-07 11:17 牛栏山1 阅读(135) 评论(0) 推荐(0)

CC++初学者编程教程(15) 基于cocos2dx的安卓打包环境
摘要:1首先安装python2 单击next3 选择默认路径,单击next4选择完全安装,单击next5单击next开始安装6 安装完成7 设置环境变量8 添加python的路径到path9 解压缩cocos2dx2.2.110正在解压缩11 复制python.bat12到这个文件夹,也就是解压缩的根... 阅读全文

posted @ 2014-07-07 11:03 牛栏山1 阅读(135) 评论(0) 推荐(0)

CC++初学者编程教程(14) Redhat linux安装Oracle12c
摘要:1选择虚拟机的设置 2 设置共享文件夹 3 使用共享文件夹向导 4 选择主机路径 5 启用文件共享 6 设置好文件共享以后,关闭虚拟机的设置 7 开启虚拟机 8 登陆 9输入密码 10 安装vmware to... 阅读全文

posted @ 2014-07-07 09:51 牛栏山1 阅读(163) 评论(0) 推荐(0)

CC++初学者编程教程(13) 基于Oracle linux 的Oracle12c环境搭建
摘要:1设置虚拟机选项 2 设置文件夹共享 3启动文件夹共享向导 4 设置共享文件夹 5 启用共享 6 关闭虚拟机设置 7 开启虚拟机 8 登陆帐户 9 看见虚拟机桌面 10 安装vmwaretools 11 看见文件夹 12 用归档管理器打开这个文件 13 解压缩 14 创建文件夹作为解压缩路径 ... 阅读全文

posted @ 2014-07-07 09:39 牛栏山1 阅读(186) 评论(0) 推荐(0)

CC++初学者编程教程(12) 基于rhel6.3的Oracle数据库学习环境搭建
摘要:前言安装oracle 11g系统最好是1G以上内存,硬盘至少需要4.5G空间。至少环境在Linux Server release 5.3以上。 win安装包 win32_11gR2_database(服务端)win32_11gR2_client(客户端)linux安装包 linux_11gR2_d... 阅读全文

posted @ 2014-07-07 09:34 牛栏山1 阅读(198) 评论(0) 推荐(0)

CC++初学者编程教程(11) 配置Windows数据库服务器
摘要:1.我们新建一个虚拟机。2. 选择默认的WorkStation10.0.3.我们选择VS2012的镜像。4.我们设置用户密码,跳过WindowsSever2012密钥5.我们选择是,稍后手动激活。6.我们选择默认虚拟机名称Windows Sever20... 阅读全文

posted @ 2014-07-07 08:57 牛栏山1 阅读(160) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(20) 搭建基于Mac的 Xcode 与 QT 开发环境
摘要:1.启动 Vmware,如果没有 VMware 的同学,请看前面我们搭建 VMware 的视频 2.打开虚拟机以后,出现虚拟机界面 3 新建一个虚拟机 4 选择自定义,单击下一步 5 选择默认的 VMWARE10,单击下一步 6 我们选择稍后安装操作系统,单击下一步 ... 阅读全文

posted @ 2014-07-06 16:39 牛栏山1 阅读(201) 评论(0) 推荐(0)

CC++初学者编程教程(10) 搭建Android java C/C++ NDK QTforAndroid 开发环境
摘要:1 安装JDK2 点下一步 3 点下一步4 开始安装5 定制路径,点下一步 6 开始安装7 安装完成, 8 解压缩9 启动eclipse10 看到启动画面11 设置工作文件夹 12 单击finish 13 新建一个Android程序14 输入项目名... 阅读全文

posted @ 2014-07-05 13:06 牛栏山1 阅读(137) 评论(0) 推荐(0)

CC++初学者编程教程(9) Windows8.1安装VS2013并捆绑QT与编程助手
摘要:我们在Windows8.1安装VS2013并捆绑QT与编程助手需要下列文件。2. 在虚拟机中开启Windows8.13.然后选择VS2013的安装镜像。4.将镜像复制到虚拟机。5.我们装载这个镜像。6.我们从光盘查看镜像文件夹。 7. 我们启动vs_ultimate.exe程序。 8.我们启动V... 阅读全文

posted @ 2014-07-05 12:57 牛栏山1 阅读(209) 评论(0) 推荐(0)

CC++初学者编程教程(8) VS2013配置编程助手与QT
摘要:1. 2. 配置编程助手 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 2... 阅读全文

posted @ 2014-07-05 12:51 牛栏山1 阅读(182) 评论(0) 推荐(0)

传智播客与英特尔结成合作伙伴,共同推动软件技术进步
摘要:目前CPU已经进入四核,八核,十六核时代。传智播客作为中国最有影响力的IT教育培训机构,其新技术推广力度深受Oracle、英特尔等公司的认可。为了进一步推广英特尔公司的超线程计算技术、GPU计算技术、多核并行计算技术和云计算技术,传智播客正式与英特尔结成合作伙伴关系,英特尔于2013年9月向传... 阅读全文

posted @ 2014-07-03 16:22 牛栏山1 阅读(103) 评论(0) 推荐(0)

传智播客C/C++学员荣膺微软&Cocos 2d-x黑客松最佳创新奖
摘要: 6月30日,历时32小时的微软开放技术Cocos 2d-x 编程黑客松在北京望京微软大厦成功落下帷幕,这是微软开放技术首次联合Cocos 2d-x 在中国举办黑客松。此次活动共有包括传智播客C/C++学院的学员组成的闪游队,以及Hurry队、繁星队等在内的18个团队,70人参加了这场开发盛事... 阅读全文

posted @ 2014-07-03 16:19 牛栏山1 阅读(173) 评论(0) 推荐(0)

Unix/Linux环境C编程入门教程(19)Red Hat Entetprise Linux 7.0环境搭建
摘要:RHEL 7的亮点: 1.RHEL 7内核支持新的64位架构,包括英特尔X-86_64、Power和s390。动态定时能力将降低内核内部中断数量,Open vSwitch 2.0功能可调节虚拟机之间的流量。RHEL 7中默认的文件系统是XFS,包含了一个64位的日志文件系统,替换了ext4文件系... 阅读全文

posted @ 2014-07-03 11:22 牛栏山1 阅读(133) 评论(0) 推荐(0)

CC++初学者编程教程(7) 搭建Windows EclipseCCPP软件开发环境
摘要:1根据电脑是32位还是64位来选择工具 2 查看电脑是64位 3 管理员身份运行这个文件4 安装JDK64位 5. 下一步 6 开始安装7 安装JAVA8 安装进行时9 安装成功10解压缩11 启动eclipse 12开始界面13 选择工作路径 14看见IDE15新建C项目16 选中VC++编... 阅读全文

posted @ 2014-07-03 10:07 牛栏山1 阅读(130) 评论(0) 推荐(0)

CC++初学者编程教程(6) 配置WindowsXP虚拟机与VC6.0
摘要:1.我们安装需要下列文件。2.新建一个虚拟机。3. 选择默认的 Vmware Work Station10.0 4. 我们选择这个WindowsXP镜像。5. 我们复制一个WindowsXPSP3的密钥,以及用户名密码。6. 我们设置好虚拟机的名称,以及文件位置。7. 我们设置处理器为双核。8.... 阅读全文

posted @ 2014-07-03 10:02 牛栏山1 阅读(206) 评论(0) 推荐(0)

CC++初学者编程教程(5) 安装codeblocks软件开发环境
摘要:Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发环境。 Code::Blocks是开放源码软件。Code::Blocks由纯粹的C++语言开发完成,它使用了蓍名的图形界面库wxWidgets(2.6.2 unicode)版。对于追求完美的C++程序员,再也不必忍受Ecli... 阅读全文

posted @ 2014-07-03 09:44 牛栏山1 阅读(241) 评论(0) 推荐(0)

导航