<<C程序设计语言>>读书笔记:第1章 导言

Posted on 2011-02-11 18:15  piupiu  阅读(235)  评论(0)    收藏  举报

本章通过若干简单的代码片段,让我对C语言编程有大体上的认识.

"编写C语言程序,首先需要编写程序文本,然后成功的进行编译,并加载,运行,最后输出到某个地方." -- 需要意识到C程序存在这些重要环节.

选择了软件:Turbo C/C++ For Windows 集成实验与学习环境 作为windows下学习用代码运行环境.
保险起见windows7下安装时,按照软件说明,指定了setup.exe在xpsp3兼容模式下运行安装.

这个集成学习环境,屏蔽了手动的编译,运行等环节.作为本章遗留的问题.
问题1.1:如何在linux下,使用文本编译器编写c程序,并编译运行.

>>>1.1
下面是第一段代码:

#include "stdio.h"
main()
{
	printf("hello, world");    
}

 
这段代码的若干细节:
1.#include指令 不需要分号结束

2.main是程序入口,main之前不需要函数返回类型声明

3.printf语句必须要以分号结束

4.字符串用双引号括起 
相关问题:
问题1.2:#include是引入标准库的方式,是否同样引入自定义库,是否有其他引入方式?
问题1.3:c文件一般以.c结尾,这是必须的么?.h结尾的头文件和.c结尾的文件有什么区别?
问题1.4:include引入stdio.h之后,printf等函数即可直接使用,如何知道引入的库占用了哪些函数名?如果遇到同意函数名多次定义,如何处理?如何避免命名和名称空间冲突.


>>>1.2

接下来的代码要点:
1.所有变量需要事先声明. 

2.int,float,char,short,long,double这些类型的长度都和具体机器有关.

3.整数除法操作将会舍位.引入较大的计算误差.

printf("%d\t%d\n",fahr,celsius);
printf("%3.0f\t%6.1f\n",fahr,celsius)

这个语句可以看出:

1.printf函数接收可变个参数.

2.打印字符串模板,%d为整数占位符.%f为浮点数占位符,%6.1f为打印指定宽度和小数点后位数.

3.注意\t,\n这类转义符号

4.某个算术运算涉及浮点数和整数,整数会转为浮点数参与计算.

问题1.5:C语言如何开发支持可变参数的函数?


>>>1.3

在允许使用某种类型变量值的任何场合,都可以使用该类型的更复杂的表达式.

>>>1.4

#define 把符号名(符号常量),定义为一个特定的字符串.注意是字符串,运行时执行的是文本替换.注意全部字母都要是用大写,#define指令末尾没有分号.

问题1.6:符号常量的文本替换是否在编译阶段进行?

问题1.7:如何定义一个字符串常量?

>>>1.5

EOF(end of file)是一个定义在stdio.h的符号常量,不必关心具体值是什么,重要的是EOF不等于任何char值.

赋值结合次序是由右至左,语句nl = nw = nc = 0;等价于nl = (nw = (nc = 0));

>>>1.6 

数组声明语句 int arr[10];

问题1.8:数组声明时是否必须指定长度?

>>>1.7

 函数需要函数声明和函数原型.函数声明类似接口定义,没有函数体.

问题1.9:函数声明是否必要?

>>>1.8

一般情况下,函数参数时传值而非传引用,如果需要传引用则需要传对象的指针.另外数组传递的是第一个元素的地址.

问题1.10:如何传指针?


>>>1.9

数组为参数的函数声明:void copy(char to[], char from[]);

因为from[]为指定长度,所以copy内容需要约定一个字符串结束标志,表示以后的数组内容没有实际意义.书中是\0.

问题1.11:数组初始化未赋值时,数组各元素的值是什么?

>>>1.10

通过extern关键字,声明需要使用的外部变量.但是变量如果在extern之前定义,那可以省略.

如果程序存在于多个文件,则必须使用extern.

通常将变量和函数extern语句放在头文件中,然后通过#include指令引入进来.printf不用extern.因为已经在stdio.h内声明.

问题1.12:C程序中,多个文件如何协作?

问题1.13:C程序编译过程是否有几次解析,编译过程怎样?为什么在函数之上的全局变量不需要extern就可以使用,而之下的不行.

问题1.14:定义(define)表示创建变量,声明(declaration)表示说明变量性质,不分配存储单元.是指函数声明和函数定义这类关系么?

>>>总结

这一章对C做了大概的介绍,大致了解了C的基本语法.遗留了14个问题,需要后续解决.