第三讲C语言基础知识_第1页
第三讲C语言基础知识_第2页
第三讲C语言基础知识_第3页
第三讲C语言基础知识_第4页
第三讲C语言基础知识_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、第三讲第三讲C语言基础知识语言基础知识1数据结构与算法 C语言的基础知识语言的基础知识第三讲第三讲C语言基础知识语言基础知识2主要内容主要内容lC语言简介语言简介l数据类型与声明数据类型与声明l运算符与表达式运算符与表达式l数组数组l指针指针l结构体结构体第三讲第三讲C语言基础知识语言基础知识3简单的简单的C语言源程序语言源程序# include stdio.hmain( ) printf( * * * * * * * * * n); /* n表示换行表示换行 */ printf( * Hello ! * n); printf( * * * * * * * * * n); 主函数主函数输出函数

2、输出函数注释注释预处理命令预处理命令第三讲第三讲C语言基础知识语言基础知识4C程序的构成程序的构成l 一个一个C C语言的源程序通常由一个或若干个函数构语言的源程序通常由一个或若干个函数构成,函数是成,函数是C C程序的基本单位,这些函数可以包程序的基本单位,这些函数可以包含在一个或者多个源文件内。含在一个或者多个源文件内。l 一个一个C C程序中必须有一个程序中必须有一个mainmain函数,它可以放在函数,它可以放在程序的任何地方。程序总是从程序的任何地方。程序总是从mainmain函数开始执函数开始执行。行。l 函数可以是系统提供的库函数,也可以是用户函数可以是系统提供的库函数,也可以是

3、用户根据自己需要编制的自定义函数。根据自己需要编制的自定义函数。第三讲第三讲C语言基础知识语言基础知识5主要内容主要内容lC语言简介语言简介l数据类型与声明数据类型与声明l运算符与表达式运算符与表达式l数组数组l指针指针l结构体结构体第三讲第三讲C语言基础知识语言基础知识6数据类型与声明数据类型与声明 数据类型数据类型指针类型指针类型空类型空类型基本类型基本类型整型整型字符型字符型实型实型(浮点型浮点型)枚举类型枚举类型单精度型单精度型双精度型双精度型构造类型构造类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型第三讲第三讲C语言基础知识语言基础知识7l 在程序运行过程中其值不能改变

4、的量叫做常量。在程序运行过程中其值不能改变的量叫做常量。常量分为整型常量(如果是长整型,要在数字后面加常量分为整型常量(如果是长整型,要在数字后面加L L) 、实、实型常量、字符型常量等。型常量、字符型常量等。const float PI=3.1415926const float PI=3.1415926l 符号常量:符号常量:值在本文件内不能改变,也不能再赋值。值在本文件内不能改变,也不能再赋值。define MAXSIZE 16define MAXSIZE 16C C语言规定标识符只能由字母打头,后面跟字母、数字或下划语言规定标识符只能由字母打头,后面跟字母、数字或下划线,大小写不通用。(

5、在线,大小写不通用。(在Turbo CTurbo C中标识符的长度可以超过中标识符的长度可以超过8 8个个字符)字符)一般符号常量名用大写,变量名用小写,以示区别。一般符号常量名用大写,变量名用小写,以示区别。常量常量第三讲第三讲C语言基础知识语言基础知识8l 在程序运行过程中其值可以改变的量叫做变量。在程序运行过程中其值可以改变的量叫做变量。l 变量要先定义(即使用类型标识符作说明)再使变量要先定义(即使用类型标识符作说明)再使用。用。 l int num;int num;l char name;char name;变量变量第三讲第三讲C语言基础知识语言基础知识9整型数据整型数据 l C C

6、语言中的整型常量可以用十进制、八进制和十语言中的整型常量可以用十进制、八进制和十六进制表示。八进制数以六进制表示。八进制数以0 0开头,十六进制数以开头,十六进制数以0 x0 x开头。(开头。(0 0为数字为数字0 0)l C C语言中的整型变量分为基本型、短整型、长整语言中的整型变量分为基本型、短整型、长整型、无符号型。型、无符号型。l 一般短整型不大于基本型,长整型不小于基本一般短整型不大于基本型,长整型不小于基本型。型。第三讲第三讲C语言基础知识语言基础知识10字符型数据字符型数据 lC语言中的字符型数据有:语言中的字符型数据有: 单字符常量单字符常量 转义字符常量转义字符常量 字符串常

7、量字符串常量 字符变量字符变量 第三讲第三讲C语言基础知识语言基础知识11单字符常量单字符常量l 单字符常量用单引号括起来单字符常量用单引号括起来l 类型标识符为类型标识符为char,输出时用,输出时用%c 表示。表示。l 按按ASCII码存储,每个字符占一个字节。码存储,每个字符占一个字节。l 给字符变量赋值时可以赋予字符的给字符变量赋值时可以赋予字符的ASCII码。码。l 例如:例如:char a=65的结果是的结果是a变量中存放一个字母变量中存放一个字母A 。 main ( ) char a=a,b=b,c=c,d=68; a=a+1;b=b+2;c=c+3;d=d+4; printf(

8、%c%c%c%cn,a,b,c,d); 运行结果:运行结果:bdfH 第三讲第三讲C语言基础知识语言基础知识12字符串常量字符串常量l 字符串常量用双引号括起来字符串常量用双引号括起来 CHINA char c; c=a; char c; c=al 没有字符串变量没有字符串变量.l 用数组来存放,数组长度大于字符串长度。用数组来存放,数组长度大于字符串长度。char c10=China;输入输出输入输出printf(%s,c); scanf(%s,c);字符串处理函数:字符串处理函数: puts(c);gets(c);strcat(str1,str2);strcpy(str1,str2);CH

9、INA0第三讲第三讲C语言基础知识语言基础知识13主要内容主要内容lC语言简介语言简介l数据类型与声明数据类型与声明l运算符与表达式运算符与表达式l数组数组l指针指针l结构体结构体第三讲第三讲C语言基础知识语言基础知识14算术运算符及表达式算术运算符及表达式 、*、% (取余)(取余) 例如:例如:7%4 得得 3注意:注意:float型数据不能做型数据不能做%运算运算 优先级:先优先级:先*、 %,后,后 、结合性:自左至右结合性:自左至右第三讲第三讲C语言基础知识语言基础知识15自增和自增和自减运算自减运算 自增、自增、 自减自减例如:例如:a 、 a 相当于相当于 aa1 a 、 a 相

10、当于相当于 aa 1但是:但是:a 是先自增再使用,是先自增再使用, a 是先使用再是先使用再自增。自增。注意:注意:float型数据不能做或型数据不能做或 运算。运算。第三讲第三讲C语言基础知识语言基础知识16主要内容主要内容lC语言简介语言简介l数据类型与声明数据类型与声明l运算符与表达式运算符与表达式l数组数组l指针指针l结构体结构体第三讲第三讲C语言基础知识语言基础知识17数组数组l数组的定义方式数组的定义方式 一维数组的定义方式为:一维数组的定义方式为:类型说明符类型说明符 数组名数组名常量表达式常量表达式int a5; 5个元素是:个元素是:a0、a1、a2、a3、a4 。 二维数

11、组的定义方式为:二维数组的定义方式为:类型说明符类型说明符 数组名数组名常量表达式常量表达式 常量表达式常量表达式 float a32,a数组有三行两列共数组有三行两列共6个元素,分别是:个元素,分别是:a00、a01、a10、a11、a20、a21;第三讲第三讲C语言基础知识语言基础知识18l 数组名的命名规则和变量名相同,下标从数组名的命名规则和变量名相同,下标从0开始,方括号开始,方括号内是元素个数。内是元素个数。l 方括号内的常量表达式的值必须是整型数,不能是变量。方括号内的常量表达式的值必须是整型数,不能是变量。l 当定义数组语句中不同时给变量赋值时,方括号内不得当定义数组语句中不同

12、时给变量赋值时,方括号内不得为空。为空。l 二维数组在内存中是按行存放的。二维数组在内存中是按行存放的。l 数组名代表的是该数组的起始地址数组名代表的是该数组的起始地址. l C语言允许使用多维数组。语言允许使用多维数组。 关于数组的说明关于数组的说明第三讲第三讲C语言基础知识语言基础知识19数组的赋值数组的赋值 l在定义数组后数组中的各个变量自动取随机数。在定义数组后数组中的各个变量自动取随机数。 int b10; b1=3; 将将3 3赋给赋给b1b1,其他元素为随机数,其他元素为随机数 。l可以在定义数组时对数组中的全部变量或部分变量赋值。可以在定义数组时对数组中的全部变量或部分变量赋值

13、。也可以在以后的语句中为变量赋值。也可以在以后的语句中为变量赋值。 int a5=3,4,5,6,7; 将五个数依次赋给将五个数依次赋给a a数组数组l在定义数组时为部分变量赋值后,其他元素为在定义数组时为部分变量赋值后,其他元素为0 0 。 int b10=0 int b10=3,2,1,0; 将四个数依次赋给将四个数依次赋给b0b3,其他元素为其他元素为0l在给全部元素赋初值时在给全部元素赋初值时,可以不用给出长度可以不用给出长度.int a=1,2,3,4,5 第三讲第三讲C语言基础知识语言基础知识20主要内容主要内容lC语言简介语言简介l数据类型与声明数据类型与声明l运算符与表达式运算

14、符与表达式l数组数组l指针指针l结构体结构体第三讲第三讲C语言基础知识语言基础知识21指针指针l 是是C语言的一个重要概念语言的一个重要概念l 可以有效地表示复杂的数据结构可以有效地表示复杂的数据结构l 能动态分配内存能动态分配内存l 能方便地使用字符串能方便地使用字符串l 能有效而方便地使用数组能有效而方便地使用数组l 在调用函数时能得到多于一个的值在调用函数时能得到多于一个的值l 能直接处理内存地址能直接处理内存地址第三讲第三讲C语言基础知识语言基础知识22指针指针l 地址和指针地址和指针l 变量的指针和指向变量的指针变量变量的指针和指向变量的指针变量l 数组与指针数组与指针第三讲第三讲C

15、语言基础知识语言基础知识23地址的概念地址的概念l 程序定义了一个变量,在编译时就给这个变量分配内存程序定义了一个变量,在编译时就给这个变量分配内存单元,内存区的每一个字节有一个编号,这就是单元,内存区的每一个字节有一个编号,这就是地址地址l 在程序中通过变量名来对内存单元进行存取操作在程序中通过变量名来对内存单元进行存取操作l 程序编译以后已经将变量名转换为变量的地址。程序编译以后已经将变量名转换为变量的地址。l scanf(%d,&i);l printf(%d,i); i_pointer=&i;3692000变量变量i变量变量j变量变量k2000200220043010变量变量i_poin

16、ter第三讲第三讲C语言基础知识语言基础知识24地址和指针地址和指针 l 一个变量的地址称为该变量的指针。通过变量的地址能找一个变量的地址称为该变量的指针。通过变量的地址能找到该变量在内存中的存储单元,从而得到它的值。到该变量在内存中的存储单元,从而得到它的值。l 变量变量i访问方式访问方式: 直接访问直接访问:按变量地址存取变量值的方式按变量地址存取变量值的方式. u i=3; printf(%d,i); 间接访问间接访问: *表示指向,定义表示指向,定义 i_pointer,* i_pointeru * i_pointer=3; scanf(%d,&i);i20003i20003i_poi

17、nter2000第三讲第三讲C语言基础知识语言基础知识25指针指针l 地址和指针地址和指针l 变量的指针和指向变量的指针变量变量的指针和指向变量的指针变量l 数组与指针数组与指针第三讲第三讲C语言基础知识语言基础知识26指向变量的指针变量指向变量的指针变量l 存放地址的变量叫做指针变量。存放地址的变量叫做指针变量。 在一个指针变量中只能存放同一类型变量的地址。指在一个指针变量中只能存放同一类型变量的地址。指针变量必须先定义,指定它的类型,才能使用。针变量必须先定义,指定它的类型,才能使用。基类型基类型 *指针变量名;例如:指针变量名;例如:int *a,*b; l 指向某数据的指针变量存放的是

18、该数据的首地址,也就是指向某数据的指针变量存放的是该数据的首地址,也就是说,指向的是该数据的首字节。说,指向的是该数据的首字节。int占占2个字节,个字节,char占占1个字节,个字节,float占占4个字,个字,l 使一个指针变量指向另一个变量使一个指针变量指向另一个变量指针变量名指针变量名=&变量名;变量名;i_pointer=&i;pointer1=&i; pointer2=&j;ipointer_1&ijpointer_2&j第三讲第三讲C语言基础知识语言基础知识27指针变量的引用指针变量的引用-1 l 在表达式中,可以使用以下两个运算符在表达式中,可以使用以下两个运算符 & 取地址运

19、算符,如:取地址运算符,如:m=&a 将将a的地址送入的地址送入m * 指针运算符(间接访问运算符)指针运算符(间接访问运算符) 如:如:*m 就是就是指针变量指针变量m所指向的变量,也就是所指向的变量,也就是a。因此,有了因此,有了m=&a 后,就有了后,就有了*m=a 。u&*m与与&a相同相同 ,*&a与与a等价等价u(*m)+相当于相当于a+, *m+相当于相当于*(m+)&aam*m第三讲第三讲C语言基础知识语言基础知识28指针指针l 地址和指针地址和指针l 变量的指针和指向变量的指针变量变量的指针和指向变量的指针变量l 数组与指针数组与指针第三讲第三讲C语言基础知识语言基础知识29

20、数组的指针和指向数组的指针变量数组的指针和指向数组的指针变量 l数组元素的指针是指数组元素的地数组元素的指针是指数组元素的地址。址。lint a10; (定义定义a为包含为包含10个整型数个整型数据的数组据的数组)lint *p; (定义定义p为指向整型变量的指为指向整型变量的指针变量针变量)lp=&a0; (赋值)(赋值)lp=a; (数组名代表数组第一个元素数组名代表数组第一个元素的首地址的首地址)lint *p=&a0 (定义的同时赋值)定义的同时赋值)lint *p=a;135791113151719a0a9&a0p第三讲第三讲C语言基础知识语言基础知识30通过指针引用数组元素通过指针

21、引用数组元素-1 l可以通过指针为数组元素赋值。可以通过指针为数组元素赋值。int a10, *p;p=&a0;*p=5;l指针变量指向数组中的元素。指针变量指向数组中的元素。int a10;int *p=&a0 ;p=p+1此时,此时,p指向数组指向数组a数组的第二个元数组的第二个元素。素。*(p+1)=a1a0a9pa数组数组p+1,a+1a1a2p+i,a+ip+9,a+9第三讲第三讲C语言基础知识语言基础知识31通过指针引用数组元素通过指针引用数组元素-2 l 指向数组的指针变量也可以带下标。指向数组的指针变量也可以带下标。 例如:例如:int a10;int *p=&a0 ;可以使用

22、可以使用ai、pi、*(a+i)或或*(p+i)引用数组中的第引用数组中的第i+1个元素。个元素。l 移动指针可以使用移动指针可以使用p+、p-,但注意指针不能超,但注意指针不能超出数组元素的范围。出数组元素的范围。 +和和*是同优先级,从右至左的结合方向。例如是同优先级,从右至左的结合方向。例如* p+和和*(p+)等价等价l 指针不允许进行乘除运算。指针不允许进行乘除运算。第三讲第三讲C语言基础知识语言基础知识32主要内容主要内容lC语言简介语言简介l数据类型与声明数据类型与声明l运算符与表达式运算符与表达式l数组数组l指针指针l结构体结构体第三讲第三讲C语言基础知识语言基础知识33结构体

23、结构体l 什么时候需要结构体类型?什么时候需要结构体类型?l 结构体类型变量的定义结构体类型变量的定义l 结构体变量的引用结构体变量的引用l 结构体变量的初始化结构体变量的初始化l 结构体数组结构体数组l 指向结构体类型数据的指针指向结构体类型数据的指针l 用指针处理链表用指针处理链表第三讲第三讲C语言基础知识语言基础知识34什么时候需要结构体类型?什么时候需要结构体类型?l 一类用户一类用户 自定义自定义 的的 数据类型数据类型 l structstruct student int num; char name20; char sex; int age; float score; char

24、addr 30;numnamesexagescoreaddr10010Li FunM1887.5Beijing第三讲第三讲C语言基础知识语言基础知识35结构体变量的定义结构体变量的定义-1lstruct 结构体名结构体名成员表列成员表列; 类型名类型名 成员名成员名l先定义结构体类型再定义变量名先定义结构体类型再定义变量名 struct abc int a; char b; float c; char d30;以上定义了一个结构体类型,并指定了其中各成员以上定义了一个结构体类型,并指定了其中各成员的名字和它们的类型。的名字和它们的类型。再有:再有:struct abc xx1,xx2,xx3;

25、定义了三个变量:定义了三个变量:xx1、xx2和和xx3,它们都,它们都具有具有struct abc的类型结的类型结构。构。第三讲第三讲C语言基础知识语言基础知识36结构体变量的定义结构体变量的定义-2l在定义类型的同时定义变量,一般形式为:在定义类型的同时定义变量,一般形式为:struct 结构体名结构体名 成员表列成员表列 变量名表列;变量名表列;u例如:例如:struct abc int a; char b; float c; char d30; xx1,xx2,xx3;结果和前面一样。结果和前面一样。第三讲第三讲C语言基础知识语言基础知识37结构体变量的定义结构体变量的定义-3l 也可

26、以直接定义结构体变量也可以直接定义结构体变量struct 成员表列成员表列 变量名表列;变量名表列;第三讲第三讲C语言基础知识语言基础知识38结构体变量的定义结构体变量的定义-4l 结构体变量的成员,可以单独使用,作用与地位相当于普结构体变量的成员,可以单独使用,作用与地位相当于普通变量,成员也可以是一个结构体变量通变量,成员也可以是一个结构体变量ustruct date int month;int day;int year;ustruct student int num; char name20; char sex; struct date birthday; /*birthday 是是st

27、ruct date 类型类型*/ student1, student2;第三讲第三讲C语言基础知识语言基础知识39结构体变量占用的内存结构体变量占用的内存 l 只有在定义变量后,才为该变量分配内存单元。结构体变只有在定义变量后,才为该变量分配内存单元。结构体变量所占的内存长度等于每个成员长度之和。量所占的内存长度等于每个成员长度之和。 #include main ( ) struct date int year,month,day;today; printf(%dn, sizeof(struct date);l 运行结果:运行结果:12 (VC+环境下)环境下)第三讲第三讲C语言基础知识语言基

28、础知识40结构体结构体l 什么时候需要结构体类型?什么时候需要结构体类型?l 结构体类型变量的定义结构体类型变量的定义l 结构体变量的引用结构体变量的引用l 结构体变量的初始化结构体变量的初始化l 结构体数组结构体数组l 指向结构体类型数据的指针指向结构体类型数据的指针l 用指针处理链表用指针处理链表第三讲第三讲C语言基础知识语言基础知识41结构体变量的引用结构体变量的引用l 不能对结构体变量整体进行输入输出,只能对结构体变量不能对结构体变量整体进行输入输出,只能对结构体变量中的成员分别进行输入和输出。中的成员分别进行输入和输出。l 引用结构体变量中各个成员的方式为:引用结构体变量中各个成员的

29、方式为:结构体变量名结构体变量名.成员名成员名l 可以对变量的成员赋值可以对变量的成员赋值ustudent1.num=99082;l 如果成员又是结构体类型,则要用多个成员运算符,找如果成员又是结构体类型,则要用多个成员运算符,找到最低一级的成员。到最低一级的成员。ustudent1.birthday.month第三讲第三讲C语言基础知识语言基础知识42结构体结构体l 什么时候需要结构体类型?什么时候需要结构体类型?l 结构体类型变量的定义结构体类型变量的定义l 结构体变量的引用结构体变量的引用l 结构体变量的初始化结构体变量的初始化l 结构体数组结构体数组l 指向结构体类型数据的指针指向结构

30、体类型数据的指针l 用指针处理链表用指针处理链表第三讲第三讲C语言基础知识语言基础知识43结构体变量的初始化结构体变量的初始化l 可以在定义时指定初始值可以在定义时指定初始值l #include stdio.hl main () struct student int num; char name20; char sex; a=89031, Li Lin,M; printf( No. %dn name:%sn sex:%cn,a.num,,a.sex);第三讲第三讲C语言基础知识语言基础知识44结构体结构体l 什么时候需要结构体类型?什么时候需要结构体类型?l 结构体类型变量的定义结

31、构体类型变量的定义l 结构体变量的引用结构体变量的引用l 结构体变量的初始化结构体变量的初始化l 结构体数组结构体数组l 指向结构体类型数据的指针指向结构体类型数据的指针l 用指针处理链表用指针处理链表第三讲第三讲C语言基础知识语言基础知识45结构体数组结构体数组l 和定义结构体变量相似,只需要说明其为数组即可和定义结构体变量相似,只需要说明其为数组即可 struct student int num; char name20; char sex; ;struct student stu3; struct student int num; char name20; char sex; stu3;第三讲第三讲C语言基础知识语言基础知识46结构体数组初始化结构体数组初始化l struct student int num; char name20; char sex; stu3=89031, Li Lin,M, 89032, Liu Ying,M, 89036, Wang Min,F; 第三讲第三讲C语言基础知识语言基础知识47结构体结构体l 什么时候需要结构体类型?什么

温馨提示

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

评论

0/150

提交评论