c语言理论学习笔记之序言[K&R]

  时光荏苒,不知不觉已毕业2时间有余,虽然从事技术行业,但是在工作中时常发觉自己的专业技术知识是捉襟见肘,这个对于一个技术开发者着实有点尴尬。反思之余,着实觉得还得从根基下手。c/c++作为高级语言中"最低级"的语言,根基当然是从这里下手咯。于是,我决定从K&R的c语言程序设计开始。。。

  序言。也就是c语言程序设计的入门知识。此章c语言的基础知识进行了一个概述:

首先是程序的基本语法结构,包含程序的各个组成部分的注解。最重要是的莫过于#include<stdio.h>,它的意思是告诉编译器本程序中包含标准输入/输出库的信息。也就是引用了一个函数库,这个函数库内包含了很多现成的方法,我们如果要使用这些方法,只需简单的把这个函数库用#include引入即可,以此类推,其他的函数库也是如此。<stdio.h>所提供的printf()/scanf()函数对我们非常的重要,以后的程序调试工作基本上全靠这个函数。

  变量与算法运算。此章进一步向我们展示了c语言中的其他成员,如注释、声明、变量循环以及格式化输出等。这让一些初学者从整体来把握c语言程序。此章最重要的是告诉读者c语言的一些数据类型,即:char、int、float、double。其中int可分为short int、int、long int,如果按范围可再分为signed和unsigned(有符号和无符号)。float、double也可按上述分类。

  这里还介绍了printf()函数的具体功能,即为输出格式化。该函数的第一个参数是待打印的字符串,其中字符串中的百分号(%)代表它的每一个参数要替换的位置,其中%d按照十进制整形打印,%s打印一个字符串,%f按照浮点数打印,这里也可以更进一步指定其位数,如%3.4f即为打印的数至少占3个字符宽,小数后面有4位数字。scanf()函数则是获取从键盘输入的字符。%%,左边的%表示转义,表示%本身。

  符号常量即用#include来定义一个特定的字符串,以便在程序中很方便的使用,这样处理还可以让我们的代码更加的易读和直观。如:#define MAXLENGTH 100 定义了一个最大长度的上限。

  字符输入/输入。标准库提供的一次读/写一个字符的函数即为getchar()和putchar()。putchar()函数的主要应用则是从文本流中读入下一个输入字符,并将其作为结果返回,处理文本时尤为有用,可用于处理文本复制、字符计数、行计数以及单词计数等。

  数组。一个非常实用的东东,此章则是通过一个简单的例子展示了数组的部分功能。要记住,在c语言中数组下标总是从0开始,数组下标可以是任何整形表达式,包括整形变量和常量。

  if (c >= '0' && c<= '9') 判定该字符是否为数字,如果是数字则其对应的数值为c - '0'。对于字母也是一样的,如果要一个字符是否是字母则可写:if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))。

  函数。为了便于计算而封装的一个方法,这样做还可以使程序更加的清晰易读。要使用一个函数首先得声明即为函数原型,然后在main()函数的下方进行定义,函数原型与函数定义中参数名不要求相同,而函数原型的参数是可选的,可只写类型,不写参数名称。

  参数-传值调用。在c语言中所有的参数都是“通过值”传递的。也就是说,传递给被调用函数的参数值存放在临时变量中,而不是存放到原来的变量中。此时被调用的函数不能直接修改主调用函数中变量的值,如果要修改则可把参数声明为指针类型,从而可以间接的修改调用函数中的变量值。注意:数组作为函数参数时,传递给函数的值是数组起始元素的位置或地址----它并不是复制数组元素本身。因此,在被调用函数中,可以通过数组下标访问或修改数组元素的值。

  字符数组。此数组是c语言中最常用的数组类型。应掌握C语言中字符数组的储存规则,即字符数组是以‘\0’(空字符)为结束标志。

  外部变量与作用域。在函数内部定义的变量即为局部变量,又称自动变量,整个函数即为自动变量的作用域,在函数执行完毕时消失。在函数外部定义的变量即称为外部变量,且只能定义一次。定义后编译程序将为它分配存储单元。在每个需要访问外部变量的函数中,必须声明相应的外部变量,此时说明其类型。声明时可以使用extern语句显示声明,也可以通过上下文进行隐式声明。通过上下文进行声明是指在程序的最开始的地方定义变量,下面的函数即可不受限制的调用此外部变量。如果程序包含在多个源文件中,而某个变量在file1文件中定义,在file2和file3文件中使用,那么在文件file2和file3中就需要使用extern声明来建立该变量与其定义之间的联系。人们常把变量和函数的extern声明放到一个单独的文件(头文件)中,并在每个源文件的开头使用#include语句把所要使用的头文件包含进来,后缀.h约定为头文件名的扩展名。

  最后需要搞清楚“声明(declaraton)”和“定义(define)”这两个词的区别:“声明”指的是说明变量的性质,但并不分配存储单元;“定义”表示创建变量或分配存储单元。外部变量虽然访问时很方便,但是且不可滥用,过分的依赖外部变量会导致一定的风险,因为它会使程序中的数据关系模糊不清----外部变量的值可能会被意外或不经意地修改,而程序的修改又变得十分困难。

  到这里,C语言的传统核心部分知识已经看完了,收获颇丰。最最重要的就是实践,接下来就是一步一个脚印地去编写每一个程序,按部就班的对每一个程序都进行调试。

  本文纯属本人在学习c语言过程中的手记,如果有错误的地方,还请各位看客大大不吝赐教,感谢!!

                   猛击这里查看序言习题答案及代码示例

posted @ 2012-06-11 23:54  飘零de思绪  阅读(1972)  评论(16编辑  收藏  举报