
C专家编程
wyjvip333
这个作者很懒,什么都没留下…
展开
-
第一章 C:穿越时空的选择
1,编译器设计者的金科玉律:效率. 编译器的效率: (1)编译时效率(产生可执行代码的速度) (2)运行时效率(可执行代码运行的速度) 2,刚开始,C语言的客户主要是编译器设计者. 因此,C语言的许多特性是为了方便编译器设计者而设定的. (1)数组的下标从0开始. (2)C语言的基本数据类型与底层语言相关联. (3)auto关键字,摆设. 缺省的变量内存分配模式:"进入程序块...原创 2010-05-11 15:06:50 · 138 阅读 · 0 评论 -
第十章 再论指针
1,数组char a[4][6]; 访问元素a[i][j]; 编译器符号列表中,a的地址9980 (1)取i的值,乘以行宽row,加到9980上. 9980+i*row; (2)取j的值,乘以元素factor的宽度,9980+i*row+j*factor; (3)从地址(9980+i*row+j*factor)中取出内容. 2,数组char* a6]; 访问元素a[i][j]; ...原创 2010-05-13 12:35:34 · 92 阅读 · 0 评论 -
第九章 再论数组
1,char s[]和char* s等价的情况:作为函数定义的形式参数(仅限于这种情况). 实例: [code="c"] #include int main() { char a[]="abcefgh"; printf("%p %s\n",a,a); //这里既可以把a作为数组名,也可以作为一个地址. return 0; } [/code] ...原创 2010-05-13 12:34:34 · 108 阅读 · 0 评论 -
第四章 数组和指针并不相同
1,先看一个常见的错误: file1: int mango[100]; //定义mango为一个数组. file2: extern int* mango; //声明mango为一个指针. 基于错误的认识"数组定义等同于指针的外部声明" 正确: file2: extern int mango[]; 2,地址(左值)和地址的内容(右值)之间的区别 x=y (1)x的含义...原创 2010-05-13 12:33:58 · 89 阅读 · 0 评论 -
第六章 运行时数据结构
1。a.out:“assembler output(汇编程序输出)”的缩写形式。 2,段的概念: (1)在UNIX中,段表示一个二进制相关的内容块。 命令:size test(可执行程序),返回文件中的三个段。 text data bss dec hex filename 1196 276 188 1660 67...原创 2010-05-12 16:30:52 · 145 阅读 · 0 评论 -
第七章 对内存的思考
1,8086内存地址的形成经过:取得段寄存器的值,左移4位,加上16位的偏移地址(段内地址)。 在Microsoft C中,fan关键字表示指针存储了段寄存器的内容和偏移地址。 near关键字表示指针只存储16位的偏移地址,它的段地址使用当前数据或堆栈段寄存器中的值。 2,虚拟内存只是对多层存储进行扩充,使用磁盘而不是主存来保存运行进程的映像。 3,虚拟内存通过“页”的形式组织。页...原创 2010-05-12 16:29:29 · 92 阅读 · 0 评论 -
第八章 为什么程序员无法分清万圣节和圣诞节
1,类型提升: 在C的表达式中,每个char都被转换为int,每个表达式中的float被转换为double。 由于函数参数也是一个表达式,所以当参数传递给函数时,也会发生类型转换。 如: sizeof(‘a’); C结果:4 C++结果:1 printf(“%d”); %d可以适用short,char和int,因为他们都会被转换为int。 2,隐式类型转换是语言中的一种临时手段...原创 2010-05-12 16:28:27 · 158 阅读 · 0 评论 -
第五章 对链接的思考
1,动态链接:可执行文件只包含了文件名,让载入器运行时寻找程序所需要的函数库. 程序在运行时寻找它们,而不是把这些函数的二进制码作为自身可执行文件的一部分. 静态链接:函数库的一份拷贝是可执行文件的物理组成部分. 2,动态链接提高性能: (1)尽管单个可执行文件的启动速度稍受影响,但是动态链接可执行文件比功能相同的静态文件小,可以节省磁盘空间和虚拟内存. (2)所有动态链接到同一个函...原创 2010-05-11 17:17:55 · 95 阅读 · 0 评论 -
第三章 分析C语言的声明
1, int( *fun() )():fun是一个函数,返回一个指针,指针指向一个int ()类型的函数. int( *fun())[]:fun是一个函数,返回一个指针,指针指向一个元素为int类型的数组. int( *fun[] )():fun是一个数组,数组元素是指针,指针指向一个int ()类型的函数. 2,关于联合: (1)可以通过把两个相互排斥的字段存储于联合中来节省空间....原创 2010-05-11 16:18:20 · 115 阅读 · 0 评论 -
第二章 这不是Bug,而是语言特性.
1,语言的缺陷:多做之过,少做之过,误做之过. 2,多做之过:缺省的全局作用域. 3,少做之过: (1)C语言中的符号重载: static 函数内部:静态变量; 函数级别:该函数只对本文件可见. extern 用于函数定义:全局可见(缺省情况) 放在变量前:声明,在其他地方定义. (2)优先级问题: 建议:在C中牢记两个优先级就够了,乘除先于加减,在涉及其他操作符时,一律加...原创 2010-05-13 13:59:52 · 94 阅读 · 0 评论