随笔分类 -  学习 C 语言

1 2 下一页
学点 C 语言(41): 函数 - 关于 main 函数
摘要:main 函数是 C 程序的入口点, 不可或缺, 不可重复; main 函数应返回一个整数值给操作系统, 返回 0 表示正常结束. 前面使用的 main 函数都是无参数的: int main(void); main 可以有两个参数: int main(int argc, char *argv[]); 第一个是自动获取的参数数目(+1), 第二个是参数列表(字符串列表); 这一般用于控制台或... 阅读全文
posted @ 2008-12-05 09:49 万一 阅读(3588) 评论(3) 推荐(0) 编辑
学点 C 语言(40): 函数 - 多参函数
摘要:像 printf 这种多参函数, 是借用 stdarg.h 中的宏实现的. va_list : 用于定义遍历参数列表的指针; va_start : 让指针指向第一个参数; va_arg : 获取下一个参数, 并向后移动一个位置; va_end : 释放指针, 完成遍历. 1. 整数求和: 本例实现了对系列整数求和, 要求至少要有三个参数, 并且最后一个必须是 0. 最后的 0 ... 阅读全文
posted @ 2008-12-04 22:20 万一 阅读(2366) 评论(0) 推荐(0) 编辑
学点 C 语言(39): 函数 - 使用函数的代价与内联函数(inline)
摘要:C 语言离不开函数, 使用函数也很方便, 但使用函数是有代价的; 特别是在反复调用时, 函数会因反复地压栈、出栈而浪费一些时间. 下面是测试, 用函数与不用函数的时间分别是: 8秒、4秒! 1. 测试使用函数的代价: #include #include int sum(int x) { return x + x; } int main(void) { int cou... 阅读全文
posted @ 2008-12-04 21:16 万一 阅读(2061) 评论(3) 推荐(0) 编辑
学点 C 语言(38): 函数 - 函数指针
摘要:先复习函数的定义与函数的声明: //这是一个求和函数的定义: int add(int x, int y) { return(x + y); } //可以这样声明: int add(int x, int y); //也可以这样声明: int add(int, int); 定义一个函数指针声明一个函数差不多, 用 (* ) 包括函数即可: //像这样: int (*pfun)(... 阅读全文
posted @ 2008-12-04 19:04 万一 阅读(2550) 评论(1) 推荐(0) 编辑
学点 C 语言(37): 函数 - 常量(const)参数
摘要:非指针参数(也就是传值参数)不会被修改原始值, const 对它是没有意义的. const 只用于指针. 1. 第一种用法: const 类型 *变量: 这种用法将限制修改指针指向的值. #include int fun(const int *p) { *p += 1; /* 只有去掉 const 这句才可以执行 */ return *p; } int main... 阅读全文
posted @ 2008-12-04 17:11 万一 阅读(2998) 评论(3) 推荐(0) 编辑
学点 C 语言(36): 函数 - 数组参数
摘要:数组参数属于指针参数. 指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径. 如果把数组当作参数, 不管你愿意与否, 它就是指针, 指向第一个值的指针. 1. 数组参数就是指向第一个元素的指针: #include void getArr(int p[], int si); int main(void) { int ns[] = {1,2,3... 阅读全文
posted @ 2008-12-04 15:47 万一 阅读(5694) 评论(1) 推荐(1) 编辑
学点 C 语言(35): 函数 - 递归
摘要:1. 递归就是: 函数自己调用自己 这是一个最简单的递归, 不过它会一直执行, 可用 Ctrl+C 终止. #include void prn(void) { printf("C++Builder 2009\n"); prn(); /* 自调用; 注意它会一直执行, 可用 Ctrl+C 终止执行 */ } int main(void) { prn(); ... 阅读全文
posted @ 2008-12-04 13:18 万一 阅读(3871) 评论(1) 推荐(1) 编辑
学点 C 语言(34): 函数 - 关于变量(auto、static、register、extern、volatile、restrict)
摘要:1. 局部变量: 局部变量也叫自动变量, 它声明在函数开始, 生存于栈, 它的生命随着函数返回而结束. #include int main(void) { auto int i = 9; /* 声明局部变量的关键字是 auto; 因可以省略, 几乎没人使用 */ printf("%d\n", i); getchar(); return 0; } ... 阅读全文
posted @ 2008-12-04 10:22 万一 阅读(3787) 评论(1) 推荐(1) 编辑
学点 C 语言(33): 函数 - 传值与传址、形参与实参
摘要:1. 传值参数(非指针参数): #include int inc(int x); int main(void) { int num = 1; printf("%d\n", inc(num)); /* 2 */ printf("%d\n", num); /* 1; num 并没有改变, 用作函数参数时只是复制过去 */ getch... 阅读全文
posted @ 2008-12-02 13:08 万一 阅读(3052) 评论(2) 推荐(0) 编辑
学点 C 语言(32): 函数 - 返回值
摘要:C 语言的函数可以返回数组以外(不包括数组指针)的任何类型. 不写明返回类型, 在以前的 C 语言版本中是默认返回 int, 现在 C99、C++ 已不支持. void 表示没有返回值, 也就无须 return 语句; 如果是其他语句必须有 return 语句. 在 main 函数中(只是 main 函数)若忘掉 return, 有些编译器会自动添加 return 0; 1. 每执行 r... 阅读全文
posted @ 2008-12-02 10:31 万一 阅读(3107) 评论(3) 推荐(0) 编辑
学点 C 语言(31): 函数 - 声明、定义、调用
摘要:1. 如果函数没有声明, 应该在调用前定义: #include /* 定义求大值函数 */ int MAX(int x, int y) { if (x > y) return x; else return y; } /* 定义求小值函数 */ int MIN(int x, int y) { return x 2. 可以在函数头... 阅读全文
posted @ 2008-12-02 09:15 万一 阅读(11400) 评论(0) 推荐(2) 编辑
学点 C 语言(30): 数据类型 - 布尔类型
摘要:1. : #include //等待填充... 阅读全文
posted @ 2008-12-02 08:33 万一 阅读(1376) 评论(1) 推荐(0) 编辑
学点 C 语言(29): 数据类型 - 定义新类型(typedef)
摘要:自定义的类型名一般要大写, 以提示这是自命名的类型. 1. 把 unsigned long 更名为 UINT: #include int main(void) { typedef unsigned long UINT; UINT num = 1234567890; printf("%lu\n", num); getchar(); ret... 阅读全文
posted @ 2008-12-02 08:05 万一 阅读(2885) 评论(0) 推荐(0) 编辑
学点 C 语言(28): 数据类型 - 联合(union)
摘要:在结构中, 每个字段的数据类型是唯一的; 使用联合可以在一个字段中储存不同的数据类型. 不同的数据类型共享一块内存. 当然其内存大小应依着大的来. 联合中的数据, 非此即彼, 只有一个有效; 应该有说明在某个数据中此时有用的是什么类型. 除了共享内存以外, 联合与结构一样. 1. union 的大小是其中最大数据成员的大小: #include int main(void) { ... 阅读全文
posted @ 2008-11-28 22:17 万一 阅读(2189) 评论(0) 推荐(0) 编辑
学点 C 语言(27): 数据类型 - 结构中的 "位字段"
摘要:所有基础的数据类型, 最大的也不过 10 个字节; 我们可以自定义的数据类型 -- "结构", 通过把若干类型组合在一起, 让一种类型可以大很多. 我们知道, 一个字节有八个 Bit 组成; 能否把一种类型缩小、缩小到 Bit 级? 结构中的 "位字段" 是以 Bit 为单位的, 这已经是计算机的最小单位, 大小是 char 类型的 1/8. 下面的例子中定义的位字段, 分别有 1-4 B... 阅读全文
posted @ 2008-11-28 21:40 万一 阅读(2536) 评论(3) 推荐(0) 编辑
学点 C 语言(26): 数据类型 - 结构的更多可能
摘要:1. 包含数组的结构: #include int main(void) { struct Rec { int x[3]; int y; } r1; r1.x[0] = 11; r1.x[1] = 22; r1.x[2] = 33; r1.y = 99; printf("%d,%d,%d,%d", r1.x[0], r... 阅读全文
posted @ 2008-11-28 17:23 万一 阅读(1350) 评论(0) 推荐(0) 编辑
学点 C 语言(25): 数据类型 - 结构数组与结构指针
摘要:1. 结构数组: #include int main(void) { struct Rec {int x,y;}; struct Rec rs[10]; size_t i; for (i = 0; i #include int main(void) { struct Rec { char name[12]; ... 阅读全文
posted @ 2008-11-28 14:35 万一 阅读(1985) 评论(0) 推荐(0) 编辑
学点 C 语言(24): 数据类型 - 结构(struct)
摘要:1. 结构就是多个变量的集合: #include int main(void) { struct Rec { int x; int y; }; struct Rec r1; r1.x = 111; r1.y = 222; printf("%d, %d", r1.x, r1.y); getc... 阅读全文
posted @ 2008-11-28 13:45 万一 阅读(2514) 评论(2) 推荐(0) 编辑
学点 C 语言(23): 数据类型 - 给指针分配内存
摘要:C 语言的内存分配很简单: malloc、calloc、realloc、free malloc(字节数); 返回内存段的首地址, void 的. calloc(个数, 类型大小); 和 malloc 的区别就是它会初始化内存为空. realloc(原指针, 字节数); 重新分配由 malloc、calloc 分配的内存; 这里有太多注意事项: 1、如果缩小了, 会截掉一块, 会保留前面的内... 阅读全文
posted @ 2008-11-28 11:09 万一 阅读(1892) 评论(0) 推荐(0) 编辑
学点 C 语言(22): 数据类型 - 多维数组与指针
摘要:1. 关于数组的首地址: #include int main(void) { char cs[2][3] = { {'A','B','C'}, {'D','E','F'} }; char *p1,*p2,*p3,*p4; p1 = p2 =... 阅读全文
posted @ 2008-11-28 07:52 万一 阅读(1777) 评论(0) 推荐(0) 编辑

1 2 下一页