第三讲C语言基础知识.ppt

上传人:本田雅阁 文档编号:2258761 上传时间:2019-03-12 格式:PPT 页数:51 大小:768.01KB
返回 下载 相关 举报
第三讲C语言基础知识.ppt_第1页
第1页 / 共51页
第三讲C语言基础知识.ppt_第2页
第2页 / 共51页
第三讲C语言基础知识.ppt_第3页
第3页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第三讲C语言基础知识.ppt》由会员分享,可在线阅读,更多相关《第三讲C语言基础知识.ppt(51页珍藏版)》请在三一文库上搜索。

1、1,数据结构与算法 C语言的基础知识,2,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,3,简单的C语言源程序,# include “stdio.h“ main( ) printf(“ * * * * * * * * * n“); /* “n“表示换行 */ printf(“ * Hello ! * n“); printf(“ * * * * * * * * * n“); ,主函数,输出函数,注释,4,C程序的构成,一个C语言的源程序通常由一个或若干个函数构成,函数是C程序的基本单位,这些函数可以包含在一个或者多个源文件内。 一个C程序中必须有一个main函数,它可

2、以放在程序的任何地方。程序总是从main函数开始执行。 函数可以是系统提供的库函数,也可以是用户根据自己需要编制的自定义函数。,5,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,6,数据类型与声明,数据类型,指针类型,空类型,构造类型,7,在程序运行过程中其值不能改变的量叫做常量。 常量分为整型常量(如果是长整型,要在数字后面加L) 、实型常量、字符型常量等。 const float PI=3.1415926 符号常量: 值在本文件内不能改变,也不能再赋值。 define MAXSIZE 16 C语言规定标识符只能由字母打头,后面跟字母、数字或下划线,大小写不通用。

3、(在Turbo C中标识符的长度可以超过8个字符) 一般符号常量名用大写,变量名用小写,以示区别。,常量,8,在程序运行过程中其值可以改变的量叫做变量。 变量要先定义(即使用类型标识符作说明)再使用。 int num; char name;,变量,9,整型数据,C语言中的整型常量可以用十进制、八进制和十六进制表示。八进制数以0开头,十六进制数以0x开头。(0为数字0) C语言中的整型变量分为基本型、短整型、长整型、无符号型。 一般短整型不大于基本型,长整型不小于基本型。,10,字符型数据,C语言中的字符型数据有: 单字符常量 转义字符常量 字符串常量 字符变量,11,单字符常量,单字符常量用单

4、引号括起来 类型标识符为char,输出时用%c 表示。 按ASCII码存储,每个字符占一个字节。 给字符变量赋值时可以赋予字符的ASCII码。 例如: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(“%c%c%c%cn“,a,b,c,d); 运行结果:bdfH,12,字符串常量,字符串常量用双引号括起来 “CHINA“ char c; c=a; char c; c=“a“ 没有字符串变量. 用数组来存放,数组长度大于字符串长度。 char c10=“China“

5、; 输入输出printf(“%s“,c); scanf(“%s“,c); 字符串处理函数: puts(c);gets(c);strcat(str1,str2);strcpy(str1,str2);,13,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,14,算术运算符及表达式, 、*、% (取余) 例如:7%4 得 3 注意:float型数据不能做%运算 优先级:先*、 %,后 、 结合性:自左至右,15,自增和自减运算, 自增、 自减 例如:a 、 a 相当于 aa1 a 、 a 相当于 aa 1 但是:a 是先自增再使用, a 是先使用再自增。 注意:float型

6、数据不能做或 运算。,16,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,17,数组,数组的定义方式 一维数组的定义方式为: 类型说明符 数组名常量表达式 int a5; 5个元素是:a0、a1、a2、a3、a4 。 二维数组的定义方式为: 类型说明符 数组名常量表达式 常量表达式 float a32,a数组有三行两列共6个元素,分别是:a00、a01、a10、a11、a20、a21;,18,数组名的命名规则和变量名相同,下标从0开始,方括号内是元素个数。 方括号内的常量表达式的值必须是整型数,不能是变量。 当定义数组语句中不同时给变量赋值时,方括号内不得为空。 二

7、维数组在内存中是按行存放的。 数组名代表的是该数组的起始地址. C语言允许使用多维数组。,关于数组的说明,19,数组的赋值,在定义数组后数组中的各个变量自动取随机数。 int b10; b1=3; 将3赋给b1,其他元素为随机数 。 可以在定义数组时对数组中的全部变量或部分变量赋值。也可以在以后的语句中为变量赋值。 int a5=3,4,5,6,7; 将五个数依次赋给a数组 在定义数组时为部分变量赋值后,其他元素为0 。 int b10=0 int b10=3,2,1,0; 将四个数依次赋给b0b3,其他元素为0 在给全部元素赋初值时,可以不用给出长度. int a=1,2,3,4,5,20,

8、主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,21,指针,是C语言的一个重要概念 可以有效地表示复杂的数据结构 能动态分配内存 能方便地使用字符串 能有效而方便地使用数组 在调用函数时能得到多于一个的值 能直接处理内存地址,22,指针,地址和指针 变量的指针和指向变量的指针变量 数组与指针,23,地址的概念,程序定义了一个变量,在编译时就给这个变量分配内存单元,内存区的每一个字节有一个编号,这就是“地址“ 在程序中通过变量名来对内存单元进行存取操作 程序编译以后已经将变量名转换为变量的地址。 scanf(“%d“,变量i 变量j 变量k,2000 2002 2004

9、,3010,变量i_pointer,24,地址和指针,一个变量的地址称为该变量的指针。通过变量的地址能找到该变量在内存中的存储单元,从而得到它的值。 变量i访问方式: 直接访问:按变量地址存取变量值的方式. i=3; printf(“%d“,i); 间接访问: *表示指向,定义 i_pointer,* i_pointer * i_pointer=3; scanf(“%d“,25,指针,地址和指针 变量的指针和指向变量的指针变量 数组与指针,26,指向变量的指针变量,存放地址的变量叫做指针变量。 在一个指针变量中只能存放同一类型变量的地址。指针变量必须先定义,指定它的类型,才能使用。 基类型 *

10、指针变量名;例如:int *a,*b; 指向某数据的指针变量存放的是该数据的首地址,也就是说,指向的是该数据的首字节。 int占2个字节,char占1个字节,float占4个字, 使一个指针变量指向另一个变量 指针变量名=,27,指针变量的引用-1,在表达式中,可以使用以下两个运算符 & 取地址运算符,如:m=&a 将a的地址送入m * 指针运算符(间接访问运算符) 如:*m 就是指针变量m所指向的变量,也就是a。 因此,有了m=&a 后,就有了*m=a 。 &*m与&a相同 ,*&a与a等价 (*m)+相当于a+, *m+相当于*(m+),&a,a,m,*m,28,指针,地址和指针 变量的指

11、针和指向变量的指针变量 数组与指针,29,数组的指针和指向数组的指针变量,数组元素的指针是指数组元素的地址。 int a10; (定义a为包含10个整型数据的数组) int *p; (定义p为指向整型变量的指针变量) p=,a0,a9,&a0,p,30,通过指针引用数组元素-1,可以通过指针为数组元素赋值。 int a10, *p; p= p=p+1 此时,p指向数组a数组的第二个元素。*(p+1)=a1,a0,a9,p,a数组,p+1,a+1,a1,a2,p+i,a+i,p+9,a+9,31,通过指针引用数组元素-2,指向数组的指针变量也可以带下标。 例如:int a10;int *p= 可

12、以使用ai、pi、*(a+i)或*(p+i)引用数组中的第i+1个元素。 移动指针可以使用p+、p-,但注意指针不能超出数组元素的范围。 +和*是同优先级,从右至左的结合方向。例如* p+和*(p+)等价 指针不允许进行乘除运算。,32,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,33,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,34,什么时候需要结构体类型?,一类用户 自定义 的 数据类型 struct struct student int num; char

13、 name20; char sex; int age; float score; char addr 30; ;,35,结构体变量的定义-1,struct 结构体名 成员表列; 类型名 成员名 先定义结构体类型再定义变量名 struct abc int a; char b; float c; char d30; 以上定义了一个结构体类型,并指定了其中各成员的名字和它们的类型。 再有: struct abc xx1,xx2,xx3;,定义了三个变量:xx1、xx2和xx3,它们都具有struct abc的类型结构。,36,结构体变量的定义-2,在定义类型的同时定义变量,一般形式为: struct

14、 结构体名 成员表列 变量名表列; 例如:struct abc int a; char b; float c; char d30; xx1,xx2,xx3; 结果和前面一样。,37,结构体变量的定义-3,也可以直接定义结构体变量 struct 成员表列 变量名表列;,38,结构体变量的定义-4,结构体变量的成员,可以单独使用,作用与地位相当于普通变量,成员也可以是一个结构体变量 struct date int month;int day;int year; struct student int num; char name20; char sex; struct date birthday;

15、/*birthday 是struct date 类型*/ student1, student2;,39,结构体变量占用的内存,只有在定义变量后,才为该变量分配内存单元。结构体变量所占的内存长度等于每个成员长度之和。 #include main ( ) struct date int year,month,day;today; printf(“%dn“, sizeof(struct date); 运行结果:12 (VC+环境下),40,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,41,结构体变

16、量的引用,不能对结构体变量整体进行输入输出,只能对结构体变量中的成员分别进行输入和输出。 引用结构体变量中各个成员的方式为: 结构体变量名.成员名 可以对变量的成员赋值 student1.num=99082; 如果成员又是结构体类型,则要用多个成员运算符,找到最低一级的成员。 student1.birthday.month,42,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,43,结构体变量的初始化,可以在定义时指定初始值 #include “stdio.h“ main () struct s

17、tudent int num; char name20; char sex; a=89031, “Li Lin“,M; printf(“ No. %dn name:%sn sex:%cn“,a.num,a.name,a.sex); ,44,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,45,结构体数组,和定义结构体变量相似,只需要说明其为数组即可 struct student int num; char name20; char sex; ; struct student stu3; stru

18、ct student int num; char name20; char sex; stu3;,46,结构体数组初始化,struct student int num; char name20; char sex; stu3=89031, “Li Lin“,M, 89032, “Liu Ying“,M, 89036, “Wang Min“,F;,47,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,48,指向结构体类型数据的指针,一个结构体变量的指针就是该变量占据的内存段的起始地址。可以设一个指

19、针变量,用来指向一个结构体变量。 指向结构体变量的指针 struct student int num; char name20; char sex; float score; ; struct student stu1; struct student *p; p= 为了方便,可以把(*p).num改用p-num来代替,以下三种形式等价: 结构体变量名.成员名 (*p).成员名 p-成员名,49,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理单链表,50,动态申请内存,数组的长度是预先定义好的,在整个

20、程序中固定不变。语言中不允许定义动态数组。 实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定。对于这种问题,用数组的办法很难解决。为了解决上述问题,语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间,也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。,51,C语言动态内存的函数,分配内存空间函数 malloc 调用形式: (类型说明符*) malloc(size) 功能:在内存的动态存储区中分配一块长度为“size“字节的连续区域。函数的返回值为该区域的首地址。 pc=(char *)malloc(100); 释放内存空间函数free 调用形式: free(void *ptr); free(pc);,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1