- 博客(12)
- 收藏
- 关注
原创 嵌套的结构体,枚举,及其他
这里说的嵌套,其实是在结构体里定义结构体及枚举。 需要重新考虑一下标识符的作用域,特别是块作用域。 struct s0 { // @ int a; }; // @ int main(int argc, char *argv) { } 两个@之间并不是一个块作用域。 所以, struct s0
2013-02-23 10:49:02 2852
原创 c语言标识符的名字空间和作用域
c语言的标识符有4种名字空间: 1. 标号名(label)。 2. 结构,联合和枚举的标记(tag)。 3. 结构和联合的成员。 4. 其他所有的标识符(普通标识符)。 有4种作用域: 1. 文件作用域。 2. 块作用域。 3. 函数作用域。 4. 函数原型作用域。 有一个通用的规则,在同一作用域同一名字空间中,标识符不同名即可。 说明如下: 1. 标号名只限定在函数作用域
2013-01-30 21:34:28 1726
原创 双向链表
双向链表定义如下: typedef struct list { struct list *fwd; struct list *bwd; int data; } list; 根节点root不带数据,root->fwd指向首节点,root->bwd指向尾节点,链表为空时,两者均为NULL。 普通节点中,fwd指向正向的后一个,bwd指向反向的前一个。 首节点的bwd为NULL,尾节点的f
2013-01-27 10:58:22 509
原创 单链表
单链表定义如下: typedef struct list { struct list *fwd; int data; } list; 根节点root不带数据,root->fwd指向首节点,为NULL表示链表为空。尾节点的fwd为NULL。 下面的例子中,数据不重复,升序排列。 插入: int insert_list(list *root, int data) { list *pCu
2013-01-27 09:38:20 296
原创 数组和指针
int a[2][3][4]; 1. a为指向数组首元素的指针。 2. &a为指向数组的指针。 3. sizeof作用于a时,取数组的大小,而不是指针的大小。 表达式 与a的距离(以int个数为单位) a + 1 12 (可以把a看成一维数组,其元素类型为数组[3][4]) &a + 1
2013-01-17 19:38:18 363
原创 字体和路径
想做一个透明时钟,初步想法是这样的: 1.获取dc,并把背景设成透明。 2.启动路径(BeginPath),用TextOut输出时间。 3.结束路径(EndPath),从路径获取区域(PathToRegion),并把该区域设为窗口的显示区域(SetWindowRgn)。 按照这个步骤做一遍,没有效果,从路径获取区域时失败。参考了网上的资料,为dc选择一个字体
2012-05-30 12:48:17 1391
原创 插入排序
void InsertSort(int *vec, int N) { int i, j, tmp; // 首个元素已经有序,从第二个开始,把后续的元素插入之前的有序子序列。 // 而且可以排除只有0,1个元素的情况。 for (i = 1; i < N; i++) if (vec[i] < vec[i - 1]) { tmp
2012-05-26 09:05:36 418
原创 折半查找的一些注意事项
int search0(int *vec, int N, int key) { int lo = 0, hi = N - 1, mid; while (lo <= hi) { // 注意点1 mid = lo + (hi - lo) / 2;// 注意点2 if (key == vec[mid]) return mid; else if (key < vec[mid])
2012-05-19 15:53:45 1260
原创 一号试验田——C语言中对象标识符的链接性
本文主要是对C语言里对象标识符的链接性进行总结。考虑下面的语句: int a; /* 0. 简单临时定义 */ static int a; /* 1. 内部链接临时定义 */ extern int a; /* 2. 纯粹声明 */ int a = 1
2011-12-18 22:25:38 1457
原创 UNICODE字符串和ANSI字符的转换
windows把字符串分成两类,UNICODE字符串和基于code page的ANSI字符串。UNICDOE字符串使用UTF-16LE编码方式(占2字节,其值与UNICODE编码真值一致,暂不考虑位于BMP之外的情况)。ANSI字符串使用多字节编码方式,以简体中文GBK为例(code page 936),ASCII码使用1字节,中文使用2字节,使用leadbyte来区分两者。 在C/C+
2011-11-13 23:03:48 2860
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人