第一章:快速上手
本章主要通过对一个程序的讲解、分析来引导读者进入c和指针的世界,通过对这个程序的分析,来介绍这本书介绍的整体内容,思路,让读者实现带着问题去读书。
知识笔记:
1、程序主要实现按指定的列对其进行打印、输出的功能。
2、程序进行编译前需要先对其进行预处理(通过预处理器),如
(1)#include 实现调用函数库的调用,此语句的作用相当于将库函数头文件的内容替换到#include所在位置,#include有"<>"," " " "两种形式,<>指进行库函数查询,从 库函数查起,再到当前目录查询;“ ”表示从当前目录查询,再到库查询。
(2)#define将一个名字(一般为大写)定义为字面型常量,预处理时会将程序中所有此名字替换为字面型常量。
(3)注释将被做删除操作。
3、函数传参所有传递给函数的参数都是按值传递的,但要区别开来,标量与常量是按值传递的(变量或常量值),形参的改变并不影响实参,指针是按地址传递的(地址的值),形参影响实参。数组是以引用方式进行传递的,传递的是数组首元素的地址,所以也为地址传递。
4、数组进行参数传递时,形参可以不写数组的长度,及可以为a[]形式,它可以接受任何长度的数组,如要限定长度,需另行传参。
5、c中对数组的下标没有严格的检查,所以需程序员自己检查。(数组长度问题)。
6、c中const关键字,将变量声明为常变量,不允许直接修改其值,但可以通过间接访问(指针操作)修改,一般用于函数传参,防止一些不希望被修改的值被修改,迫使编译器进行检查。
7、scanf、prinf:格式化输入输出函数,一般成对出现。
(1)scanf接收几个参数,格式化字符串、剩下的都是变量,作用是将变量转换为格式化字符串,其函数的返回值为函数成功转换并存储于参数中的个数。scanf中变量前必有&(数组名前可有可无)。注意%s格式不能有空格出现,因为空格表示结束。
(2)printf接收多个参数,第一个为格式化字符串,剩下的都是打印的值,其函数的返回值为打印在屏幕中字符的个数。
(3)基本格式:《c和指针》p8、p9.
8、gets、puts:一般读取,输出一串字符,以换行符结尾
(1)gets函数读取时会丢弃换行符,以一个NUL结尾(此物不存在,要用需定义)(类似‘\0’,字节模式全0),成功读取返回非NULL,否则返回NULL;(数组长度问题)。
(2)puts对应gets的输出函数将指定的字符串输出并加以换行符。
9、getchar、putchar:得到、输出一个整型变量(字符型即为小整型变量)返回得到的值。
10、文件末尾标志EOF为一个整型值。
11、关于部分字符串函数的使用:头文件 string.h
strncpy函数,字符串复制,接受3个参数,第一个目标参数,第二个源参数,第三个,复制长度(较严谨)。
strcpy函数,一种不带限制字符数量的字符串复制函数。(第一个参数不能为字符串常量)
strcat函数,将第二个字符串加到第一个的末尾。(第一个参数不能为字符串常量)
strchr函数,第一个参数为字符串,第二个为要查找的字符,没有返回NULL指针。
12、操作符、空语句的使用(=与==)(;)
13、注释的合理使用,注释可以添加在任何空格可以出现的地方。
14、代码的删除可以使用如下语句:
#if 0
{
代码块
}
#endif
15、函数返回值类型int、void等
...........
第二章 基本概念
本章主要对程序的编译链接生成可执行的程序的过程进行阐述,并对c的语法规则,书写规范进行讲解。
知识笔记:
1、一个源程序一般要经过预处理、编译、链接,最后生成可执行文件。
2、文件名:
(1) 对源文件、头文件来说,大多环境都为.c .h。
(2)目标文件UNIX系统为.o,MS-DOS(微软磁盘系统)为.obj。
3、在程序执行时,将使用一个运行时堆栈进行函数局部变量及返回地址的存储。(完成任务时释放),静态内存整个程序执行过程中不释放,保留。
4、C中字符并未特定,但所有大小写字母,0-9数字及P22页所示字符必有。
5、三字母词的使用(不常用)为了实现字符集上没有的字符而存在。P22
6、转义字符(\)的使用\"字符串中输出“,在字符串中表示一个字符,\?、\‘、\\等。
7、标识符指变量、函数、类型等的名字,其以字母、下划线、数字组成。注意不能以数字开头,以便于十六进制等做区分,c中预留的关键字不能用作标识符,详见P24。
8、注意注释的书写形式,以免程序出错。
............