C语言读书报告
C语言读书报告
C语言在本科一年级时就已经学过,当时学习后主要是以编写简单的循环和判断等结构化程序为目标,用C来解决一个数学上的一个简单问题。在后面C的精华,指针,只是稍作了解,更不用说复杂的文件和结构体等操作。这次重读,也是以指针、文件、内存、结构,这四个方面为主。使用的是《C PRIMER PLUS》。
C语言是面向过程的编程语言,有以下几个优点:
1、设计特性
它的设计使得用户可以自然地采用自顶向下的规划、结构化的编程,以及模块化设计。这种做法使得编写出的程序更加可靠、更易懂。
2、高效性
3、可移植性
各种操作系统都有其自己的C编译器,这使得C的移植比其他语言更加容易。
4、强大的功能和灵活性
其他很多语言编译器,如FORTRAN、Perl、Python等都是用C来编写的。
目录
C语言读书报告1
一 数组与指针2
1.1 数组2
1.2 指针2
1.3 指针与一维数组3
1.4 指针与多维数组3
1.5 指针数组与数组指针3
1.6 指针变量和指针常量3
二 字符与字符串4
2.1 单字符的输入/输出4
2.2 字符串的定义5
2.3 字符串输入 scanf() gets() fgets()5
2.4 字符串输出 puts() fputs() printf()5
2.5 自定义输出函数6
2.6 sprintf()函数6
2.7 把字符串转换为数字7
三 文件操作8
3.1 什么是文件8
3.2 文件的打开关闭8
3.3 文件IO9
3.4 格式化读写函数fprintf()与fscanf()10
3.5 字符串读写函数fgets()和fputs()10
3.6 数据块读写函数fwrite()与fread()10
3.7 随机存取11
四 内存管理12
4.1 内存分配方式12
4.2 分配内存:malloc()和free()12
一 数组与指针
1.1 数组
一维数组像一个指定大小的向量,说像,是因为放在数组中的数据按顺序排成一排,每一个下标对应一个数值(整形、浮点型、字符型),不像的地方在于向量大小可以伸缩,C++中的vector就是这样一个可以随意伸缩的向量。
关于一个初始化的问题。数组可以在声明时进行初始化,初始化后大小固定,可以在[]中指定数组大小,在声明时初始化,如果初始化元素没有达到指定的大小,后面不足的默认为0。如果声明时不指定大小,即[]中的值缺省,则必须在声明时进行初始化,编译器会根据列表中的数值数目来确定数组大小。
赋值问题。如果要对数组中的所以数进行赋值或打印,那么只能采用循环赋值的方式,通常采用以下方式
Int day[]={31,32,33,34,23,30,32,12,14};
Int index;
For(index =0;index
Printf(“num[%d]:%d”,day[index]);
控制语句使用sizeof,让计算机来计算数组大小,避免出错。
二维数组。int array[ROW][VOL],内部数据排放可以理解成一个矩阵,用某行某列指定数组中的一个元素。也可以将其理解成多个一维数组的排放。与一维数组类似,只是初始化时每一行元素用{}圈起,当然,{}中的元素也可以小于列大小,这样其他的就默认为0,二维数组的赋值取值往往使用两个for循环。
1.2 指针
& 地址运算符 通过这个运算符得到的是变量在程序虚拟空间的地址
后跟一个变量名,&给出该变量的地址
* 间接运算符(或叫取值运算符) 用来获取地址中存放的数值
当后面跟一个指针名或地址时,*给出存储在被指向地址中的数值
Int a = 3;
Int *b = &a;
上例中a是一个变量,&a取得a的地址,在这个地址里放着a的值,将这个地址赋给指针b,这时指针b就指向a的地址,上面是指针的初始化。
那么什么是指针呢?指针是一个其数值为地址的变量。
1.3 指针与一维数组
数组名就是一个地址,这个地址存放的是数组的第一个元素,如下
Int arr[5] = {1,2,3,4,5};
Arr = arr[0];
Int *ptr = arr;
1.4 指针与多维数组
Int zippo[4][2];
Zippo = zippo[0] = zippo[0][0]
数组名Zippo同时也是数组首地址,其中zippo[0]表示包含两个int的数组,所以zippo也是包含两个int的数组的地址
Zippo第1个大小为2个int的元素的地址Zippo+2第3个大小为2个int的元素的地址*(zippo+2)第3个元