心之镇

~宁以致远~
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年4月14日

摘要: makefile中一些常用符号的意义$@表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合。$%仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"foo.a (bar.o)",那么,"$%"就是"bar.o","$@"就是"foo.a"。如果目标不是函数库文件(Unix下是[.a],Windows下是[.lib]),那么,其值为空。$<依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%& 阅读全文

posted @ 2011-04-14 13:50 心之镇 阅读(348) 评论(0) 推荐(0) 编辑

2011年4月9日

摘要: 根据ANSI C标准的赋值约束条件: 1. 两个操作数都是指向有限定符或无限定符的相容类型的指针。 2. 左边指针所指向的类型必须具有右边指针所指向类型的全部限定符。一、const char*和char* const char*的类型是:“指向一个具有const限定符的char类型的指针”。(不能修改其值) char*的类型是:“指向一个char类型的指针”。 因此const char*和char*都是指向char类型的指针,只不过const char*指向的char类型是const的。 因此对于代码:char* src;const char* dest ;dest = src; 这样赋值是正 阅读全文

posted @ 2011-04-09 17:26 心之镇 阅读(10364) 评论(2) 推荐(0) 编辑

摘要: 1.以字符串 形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写 "abc",那么编译器帮你存储的是"abc\0"2."abc" 是常量吗?答案是有时是,有时不是。不是常量的情 况:"abc"作为字符数组初始值的时候就不是,如 char str[] = "abc";因为定义的是一个字符数组,所以就相当于定义了一些空间来存放"abc",而又因为字符数组就是把字符一个一个地存放的,所以编译器把 这个语句解析为 char str[3] = {'a' 阅读全文

posted @ 2011-04-09 00:15 心之镇 阅读(291) 评论(0) 推荐(0) 编辑

2011年4月8日

摘要: 一、可能的组合: (1)const char*p (2)char const*p (3)char *const p (4)const char **p (5)char const**p (6)char *const *p (7)char **const p 当然还有在(5)、(6)、(7)中再插入一个const的若干情况,不过分析了以上7中,其他的就可类推了!二、理解助记法宝: 1。关键看const 修饰谁。 2。由于没有const *的运算,若出现const*的形式,则const实际上是修饰前面的。 比如:char const*p,由于没有const*运算,则const实际上是修饰前面的ch 阅读全文

posted @ 2011-04-08 23:32 心之镇 阅读(655) 评论(0) 推荐(0) 编辑

摘要: 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆(heap):由malloc,new等分配的空间的地址,地址由低向高增长(程序员释放)。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 栈(stack):是自动分配变量,以及函数调用所使用的一些空间(所谓的局部变量),地址由高向低减少; 3、全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初. 阅读全文

posted @ 2011-04-08 23:25 心之镇 阅读(2702) 评论(0) 推荐(0) 编辑

摘要: Linux 环境下当GCC版本比较高时,编译代码可能出现的问题问题是这样产生的,先看这个函数原型:void someFunc(char *someStr);再看这个函数调用:someFunc("I'm a string!");把这两个东西组合起来,用最新的g++编译一下就会得到标题中的警告。为什么呢?原来char *背后的含义是:给我个字符串,我要修改它。而理论上,我们传给函数的字面常量是没法被修改的。所以说,比较和理的办法是把参数类型修改为const char *。这个类型说背后的含义是:给我个字符串,我只要读取它。很自然的延伸一下。 如果我既要传字面常量又要传字 阅读全文

posted @ 2011-04-08 20:38 心之镇 阅读(1592) 评论(0) 推荐(0) 编辑

2009年12月7日

摘要: 刚接触ORACLE的人肯定会对实例和数据库感到困惑,实例到底代表些什么?为什么会有这个概念的出现?ORACLE实例 = 进程 + 进程所使用的内存(SGA)实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态!数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件数据库是永久的,是一个文件的集合。ORACLE实例和数据库之间的关系1.临时性和永久性2.实例可以在没有数据文件的情... 阅读全文

posted @ 2009-12-07 00:34 心之镇 阅读(507) 评论(0) 推荐(0) 编辑

2009年11月11日

摘要: 我们要讨论的第一个结构类型是:struct sockaddr,该类型是用来保存socket信息的: struct sockaddr { unsigned short sa_family; /* 地址族, AF_xxx */ char sa_data[14]; /* 14 字节的协议地址 */ }; sa_family一般为AF_INET;sa_data则包含该socket的IP地址和端口号。 另外... 阅读全文

posted @ 2009-11-11 22:37 心之镇 阅读(408) 评论(0) 推荐(0) 编辑

摘要: 虽然一直在使用 Vim 写程序与文档,但是一直没有深究其标签页 (Tab Page) 功能的具体使用方法。现在开始重视这个问题,毕竟使用 Vim 的时间越来越少了,当然这只是针对我的所有生命而言。1 建立新的标签页使用 Vim 在当前工作目录中新建或打开某一文件并开启新标签页显示文件内容,操作如下::tabnew filename使用 tabf 指令基于正则表达式递归遍历当前工作目录查找名称匹配的... 阅读全文

posted @ 2009-11-11 17:52 心之镇 阅读(721) 评论(0) 推荐(0) 编辑

2009年10月29日

摘要: 先安装mysql代码:sudo apt-get install mysql-server mysql-client再装开发包代码:sudo apt-get install libmysqlclient15-dev安装完以后,C代码里添加头文件代码:#include <mysql.h>编译方法:代码:gcc $(mysql_config --cflags) xxx.c -o xxx $(... 阅读全文

posted @ 2009-10-29 20:44 心之镇 阅读(407) 评论(0) 推荐(0) 编辑