大学C语言笔记_第1页
大学C语言笔记_第2页
大学C语言笔记_第3页
大学C语言笔记_第4页
大学C语言笔记_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章概述

1.C语言的特点

①语言简洁、紧凑,使用方便、灵活。共有32个关键字,9种控制语句。②运算符丰富,公有34种运算符。③数据结构丰富,数据类型有:整型、实型、字符型、数组、指针、结构体、共用体等。④具有结构化的控制语句(如if…else、while、do…while、switch、for)⑤语法限制不太严格,程序设计自由度大。⑥允许直接访问物理地址,能进行位(bit)操作,可以直接对硬件操作。⑦生成目标代码质量高,程序执行效率高。⑧可移植性好。

2.C语言的用途

C虽不擅长科学计算和管理领域,但对操作系统和系统实用程序以及对硬件进行操作方面,C有明显的优势。现在很多大型应用软件也用C编写。

TopofPage

第二章数据类型、运算符与表达式

1.C的数据类型

C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。

2.常量与变量

常量其值不可改变,符号常量名通常用大写。变量其值可以改变,变量名只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。否则为不合法的变量名。变量在编译时为其分配相应存储单元。

3.整型数据

整型常量的表示方法:十进制不用说了,八进制以0开头,如0123,十六进制以0x开头,如0x1e。整型变量分为:基本型(int)、短整型(shortint)、长整型(longint)和无符号型。不同机器上各类数据所占内存字节数不同,一般int型为2个字节,long型为4个字节。

4.实型数据

实型常量表示形式:十进制形式由数字和小数点组成(必须有小数点),如:0.12、.123、1230.0等。指数形式如123e3代表123×10的三次方。实型变量分为单精度(float)和双精度(double)两类。在一般系统中float型占4字节,7位有效数字,double型占8字节,15~16位有效数字。

5.字符型数据

字符变量用单引号括起来,如'a','b'等。还有一些是特殊的字符常量,如'\n','\t'等。分别代表换行和横向跳格。字符变量以char来定义,一个变量只能存放一个字符常量。字符串常量是由双引号括起来的字符序列。这里一定要注意'a'和"a"的不同,前者为字符常量,后者为字符串常量,c规定:每个字符串的结尾加一个结束标志'',实际上"a"包含两个字符:'a'和''。

6.数值型数据间的混合运算

整型、字符型、实型数据间可以混合运算,运算时不同类型数据要转换成同一类型再运算,转换规则:char,short->int->unsigned->long->double<-float

7.运算符和表达式

c运算符包括:算数运算符(+-*/%)关系运算符(><==>=<=!=)逻辑运算符(!&&||)位运算符(<<>>~|^&)赋值运算符(=)条件运算符(?:)逗号运算符(,)指针运算符(*&)求字节数(sizeof)强制类型转换(类型)分量运算符(.->)下标运算符([])其它运算符(如函数调用运算符())自增自减运算符(++--)注意:++i和i++的不同之处,++i使用i之前先使i加1,i++使用i之后,使i加1。逗号表达式的求解过程:先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值。

TopofPage

第三章最简单的c程序设计

1.c的9种控制语句:

if()~else~for()~while()~do~while()continuebreakswitchgotoreturn程序的三种基本结构:顺序结构,选择结构,循环结构

2.数据输出

c语言不提供输入输出语句,输入输出操作是由c的库函数完成。但要包含头文件stdio.h。putchar()向终端输出一个字符printf()的格式字符:①d格式符用来输出十进制整数%d按整型数据的实际长度输出%md使输出长度为m,如果数据长度小于m,则左补空格,如果大于m,则输出实际长度%ld输出长整型数据②o格式符以八进制形式输出整数③x格式符以十六进制形式输出整数④u格式符用来输出unsigned型数据,以十进制形式输出⑤c格式符用来输出一个字符⑥s格式符输出一个字符串%s输出实际长度字符串%ms输出的串占m列,如果串长度小于m,左补空格,如果大于m,实际输出%-ms输出的串占m列,如果串长度小于m,右补空格,%m.ns输出占m列,但只取字符串中左端n个字符并靠右对齐%-m.nsm、n含义同上,靠左对齐,如果n>m,则m自动取n值⑦f格式符以小数形式输出实数%f整数部分全部输出,小数部分输出6位%m.nf输出数据共占m列,其中有n位小数。如果数值长度小于m,左补空格%-m.nf同上,右补空格⑧e格式符以指数形式输出实数%e系统指定6位小数,5位指数(e+002)⑨g格式符输出实数,根据数值大小,自动选f格式或e格式

3.数据输入

getchar()从终端输入一个字符scanf(格式控制,地址列表)标准Cscanf中不使用%u,对于unsigned型数据,以%d或%o或%x输入。%后的*,用来跳过它相应的数据。输入数据时不能规定精度如scanf("%7.2f",&a);是不合法的。

TopofPage

第四章逻辑运算和判断选取控制

1.关系运算符:

c提供6种关系运算符(><<=>===!=)前四种优先级高于后两种。

2.If语句静态存储:静态局部变量(函数内有效)静态全局变量(本文件内有效)全局变量(其它文件可引用)从变量值存放的位置分静态存储区:静态局部变量静态全局变量全局变量动态存储区:自动变量和形参寄存器内:寄存器变量

7.内部函数和外部函数

内部函数:只能被本文件中的其它函数调用,定义时前加static,内部函数又称静态函数。外部函数:可以被其它文件调用,定义时前加extern,如果省略,则隐含为外部函数,在需要调用此函数的文件中,一般要用extern说明。

TopofPage

第八章预编译处理

c编译系统在对程序进行通常的编译之前,先进行预处理。c提供的预处理功能主要有以下三种:1)宏定义2)文件包含3)条件编译

1.宏定义

不带参数的宏定义用一个指定的标识符来代表一个字符串,形式:#define标识符字符串几点说明:1)宏名一般用大写2)宏定义不作语法检查,只有在编译被宏展开后的源程序时才会报错3)宏定义不是c语句,不在行末加分号4)宏名有效范围为定义到本源文件结束5)可以用#undef命令终止宏定义的作用域6)在宏定义时,可以引用已定义的宏名

带参数的宏定义定义形式:#define宏名(参数表)字符串这和函数有些类似,但他们是不同的:1)函数调用时,先求实参表达式值,再代入形参,而宏只是简单替换,并不求值2)函数调用是在程序运行时分配内存的,而宏展开时并不分配内存,也没有返回值的概念3)对函数中的实参和形参都要定义类型,而且要求一致,宏名无类型,其参数也没有类型。4)函数只有一个返回值,而宏可以得到几个结果5)宏替换不占运行时间,只占编译时间,而函数调用占运行时间

2.文件包含处理

#include"文件1"就是将文件1的全部内容复制插入到#include位置,作为一个源文件进行编译。在#include命令中,文件名可以用""也可以用<>,假如现在file1.c中包含file2.h文件,""表示系统先在file1.c所在目录中找file2.h,如果找不到,再按系统指定的标准方式检索目录,<>表示系统直接按指定的标准方式检索目录。所以用""保险一点。

3.条件编译

条件编译指不对整个程序都编译,而是编译满足条件的那部分。条件编译有以下几种形式:1)#ifdef标识符程序段1#else程序段2#endif它的作用:当标识符在前面已经被定义过(一般用#define),则对程序段1编译,否则对程序段2编译。2)#ifndef标识符程序段1#else程序段2#endif它的作用和#ifdef相反,当标识符没被定义过,对程序段1编译,否则对程序段2编译。3)#if表达式程序段1#else程序段2#endif它的作用:当表达式值为真(非0)时,对程序段1编译,否则对程序段2编译。

TopofPage

第九章指针

指针说白了就是地址。指针变量就是用来存放指针(地址)的变量。

1.变量的指针和指向变量的指针变量

读起来很拗口,说白了就是变量的地址和用来存放变量地址的地址变量。因为一个变量在编译的时候系统要为它分配一个地址,假如再用一个变量来存放这个地址,那么这个变量就叫做指向变量的指针变量,也就是用来存放变量地址的这么一个变量。所谓"指向"就是指存放××的地址,如指向变量的指针变量,"指向"就是指用来存放变量的地址,再如指向数组的指针变量,"指向"就是指存放数组的地址。只要理解了这个,指针也就不难了。另外,还有指向字符串的指针变量,指向函数的指针变量,指向指针的指针变量等。

1)指针变量的定义形式:类型标识符*标识符如:int*pointer;要注意两点:*表示pointer是个指针变量,在用这个变量的时候不能写成*pointer,*pointer是pointer指向的变量。一个指针变量只能指向同一个类型的变量。如上面pointer只能指向int型变量。

2)指针变量的引用两个有关的运算符:&取地址运算符&a就代表变量a的地址*指针运算符*a就代表变量a的值

2.数组的指针和指向数组的指针变量

数组的指针指数组的起始地址,数组元素的指针指数组元素的地址。1)指向数组元素的指针变量的定义与赋值定义和指向变量的指针变量定义相同,c规定数组名代表数组的首地址,即第一个数组元素地址。2)通过指针引用数组元素我们通常引用数组元素的形式是a[i],如果用指针可以这样引用,*(a+i),或定义一个指针变量p,将数组a的首地址赋给p,p=a;然后用*(p+i)引用。注意:指针变量p指向数组a首地址,则p++指向数组a的下一元素地址,即a[1]的地址。3)数组名作函数参数形参数组和实参数组之间并不是值传递,而是共用同一段地址,所以在函数调用过程中如果形参的值发生变化,则实参的值也跟着变化。4)指向多维数组的指针和指针变量以二维数组为居多。假设定义了一个二维数组a[3][4],那么a代表整个二维数组的首地址,也代表第0行的首地址,同时也是第0行第0列的元素的首地址。a+0和a[0]代表第0行首地址,a+1和a[1]代表第一行的首地址。假设a是一个数组的首地址,那么如果a是一维的,a+I代表第I个元素的地址,如果a是二维的,则a+I代表第I行的首地址。那么第一行第二列的元素地址如何表示呢?a[1]+2或&a[1][2]或*(a+1)+2。我们只要记住:在二维数组中a代表整个数组的首地址,a[I]代表第I行的首地址,a[I]与*(a+I)等价就行了。只要运用熟练了就没什么复杂的了。5)指向由m个整数组成的一维数组的指针变量如:int(*p)[4],p是一个指向包含4个元素的一维数组,如果p先指向a[0],则p+1指向a[1],即p的增值是以一维数组的长度为单位的,这里是4,举个例子:假设a[3][4]=,p先指向a[0]也就是数组a的首地址,那么p+1就是a[1]的首地址即元素9的地址,因为在定义p时int(*p)[4],定义一维数组长度为4,所以p+1就等于加了一个一维数组的长度4。

3.字符串的指针和指向字符串的指针变量

1)字符串的表示形式c中字符串有两种表示形式:一种是数组,一种是字符指针charstring[]="Ilovec!";char*str="Ilovec!";其实指针形式也是在内存中开辟了一个数组,只不过数组的首地址存放在字符指针变量str中,千万不要认为str是一个字符串变量。2)字符串指针作函数参数实际上字符串指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论