第一章导言的笔记与思考
Writer:BYSocket(泥沙砖瓦浆木匠)
微博:BYSocket
豆瓣:BYSocket
~:较重要 ~~:重要
1.1 hello,world
~初学人来说还是一大障碍,手写编写程序文本,然后成功的进行编译,并加载、运行,然后输出到某个地方。
#include<stdio.h>
int main()
{
printf(“hello,world\n”);
return 0;
}
思考:renturn 0; 为啥呢? return -1; return 1000;可以吗? 答案是可以的。
~一个C语言程序,无论大小,都是由函数和变量组成。
~~#include<stdio.h>用于告诉编译器在本程序中包含标准输入/输出库的信息。
思考:编译器?有哪些?干嘛用?
答案是:例如常见的gcc (GNC Compiler Collection)GNC编译器套件,初衷是为了GNC编写的一款编译器。被大部分UNIX采纳为标准编译器。四个相关步骤:预处理 → 编译 → 汇编 → 链接,详情查阅:gcc百科
~用双引号括起来的字符序列为字符串或者字符串常量。
思考:字符串常量?有木有字符串变量呢?答案是:有的。
~~printf函数永远不会自动换行。
1.2变量与算数表达式
~~int与float类型的取值返回取决于具体的机器。
思考:跟机器,还是编译器?那标准是什么?
答:C标准只规定了short至少16位,long至少32位,long long 至少64位[1],同时long long >= long >= short。至于具体多少由机器上的编译器决定。
~好习惯:每行指书写一条语句,并在运算符两本各加上一个空格。
~~%6.1f:至少占6个字符宽,精确到小数后一位。%o 表示八进制数,%x表示十六进制数,%c表示字符,%s表示字符串,%%表示%本身。
1.3for 语句 1.4 符号常量
~for语句是while语句的推广。
~在程序中,不要使用200,”1″这种幻数
~#define指令吧符号名定义为一个特定的字符串。末尾无分号。
1.5 字符输入/输出
~~输入和输出都是按照字符流的方式处理的。问奔流是有多行字符构成的字符序列,而每行字符则由0个或者多个字符组成,行末是个换行符。一次读/写一个字符的函数:getchar 和 putchar。
1.5.1 文件复制
~~字符在机器内部都是以为模式存储的。char类型专门在于存储这种字符类型数据。
~EOF定义在<stdio.h>头文件,是一个整型数。具体数值是什么并不重要,只要它与任何char类型的值不相同即可。可以确保程序不需要依赖于其对应的任何特定数值。
~不等于运算符的优先级高于赋值元算符=。
1.5.2 字符统计
~~long整形,长整型至少要占用32位存储单元。在某些机器上int与long类型的长度相同,int类型的值只有16位存储单元的长度。
~ @.0f强制不打印小数点和小数部分。
~单独的分号称为空语句。
1.5.3 行计数
~~单引号字符表示一个整形数,此字符在机器字符集中对应的数值。称为字符常量。
~‘\n’代表换行符的值,ASCII值为10。
1.5.4
~nl = nw = nc =0; 等价于 nl = (nw = (nc =0)); 由右往左。
1.6 数组
~ 数组下标可以是任何整形表达式。包括整形变量(如i)以及整形常量。
1.7 函数
~~如果源程序分散在各个文件中,编译和加载时会做更多的工作,但是这个是操作系统的原因,并不是语言的决定的。
~~调用者实际上的就是程序的执行环境,返回为0表示正常终止,非0表示异常情况或者出错结束条件。
~建议:在使用新式的编译器时,最好使用新式的函数原形声明方式。
1.8 参数-传值调用
~ ~在C语言中,所有函数参数都是”通过值”来传递的.
~~ 调用者需要想被调用提供设置值得变量地址。地址就是变量的指针。被调用者需要将其设置为指针类型,并通过间接访问变量。
Writer:BYSocket(泥沙砖瓦浆木匠)
微博:BYSocket
豆瓣:BYSocket