1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c语言入门自学ppt 《C语言基础知识》PPT课件.ppt

c语言入门自学ppt 《C语言基础知识》PPT课件.ppt

时间:2021-01-29 21:12:22

相关推荐

c语言入门自学ppt 《C语言基础知识》PPT课件.ppt

1,数据结构与算法 C语言的基础知识,,2,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,,,3,简单的C语言源程序,# include “stdio.h“ main( ) { printf(“ * * * * * * * * * \n“); /* “\n“表示换行 */ printf(“ * Hello ! * \n“); printf(“ * * * * * * * * * \n“); },主函数,输出函数,注释,,,4,C程序的构成,一个C语言的源程序通常由一个或若干个函数构成,函数是C程序的基本单位,这些函数可以包含在一个或者多个源文件内。 一个C程序中必须有一个main函数,它可以放在程序的任何地方。程序总是从main函数开始执行。 函数可以是系统提供的库函数,也可以是用户根据自己需要编制的自定义函数。,,5,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,,,6,数据类型与声明,,数据类型,,指针类型,空类型,构造类型,,,7,在程序运行过程中其值不能改变的量叫做常量。 常量分为整型常量(如果是长整型,要在数字后面加L) 、实型常量、字符型常量等。 const float PI=3.1415926 符号常量: 值在本文件内不能改变,也不能再赋值。 #define MAXSIZE 16 C语言规定标识符只能由字母打头,后面跟字母、数字或下划线,大小写不通用。(在Turbo C中标识符的长度可以超过8个字符) 一般符号常量名用大写,变量名用小写,以示区别。,常量,,8,在程序运行过程中其值可以改变的量叫做变量。 变量要先定义(即使用类型标识符作说明)再使用。 int num; char name;,变量,,9,整型数据,C语言中的整型常量可以用十进制、八进制和十六进制表示。八进制数以0开头,十六进制数以0x开头。(0为数字0) C语言中的整型变量分为基本型、短整型、长整型、无符号型。 一般短整型不大于基本型,长整型不小于基本型。,,10,字符型数据,C语言中的字符型数据有: 单字符常量 转义字符常量 字符串常量 字符变量,,11,单字符常量,单字符常量用单引号括起来 类型标识符为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%c\n“,a,b,c,d); } 运行结果:bdfH,,12,字符串常量,字符串常量用双引号括起来 “CHINA“ √ char c; c=‘a’; × char c; c=“a“ 没有字符串变量. 用数组来存放,数组长度大于字符串长度。 char c[10]=“China“; 输入输出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 ++相当于 a=a+1 -- a 、 a --相当于 a=a - 1 但是:++a 是先自增再使用, a ++是先使用再自增。 注意:float型数据不能做++或- -运算。,,16,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,,,17,数组,数组的定义方式 一维数组的定义方式为: 类型说明符 数组名[常量表达式] int a[5]; 5个元素是:a[0]、a[1]、a[2]、a[3]、a[4] 。 二维数组的定义方式为: 类型说明符 数组名[常量表达式] [常量表达式] float a[3][2],a数组有三行两列共6个元素,分别是:a[0][0]、a[0][1]、a[1][0]、a[1][1]、a[2][0]、a[2][1];,,18,数组名的命名规则和变量名相同,下标从0开始,方括号内是元素个数。 方括号内的常量表达式的值必须是整型数,不能是变量。 当定义数组语句中不同时给变量赋值时,方括号内不得为空。 二维数组在内存中是按行存放的。 数组名代表的是该数组的起始地址. C语言允许使用多维数组。,关于数组的说明,,19,数组的赋值,在定义数组后数组中的各个变量自动取随机数。 int b[10]; b[1]=3; 将3赋给b[1],其他元素为随机数 。 可以在定义数组时对数组中的全部变量或部分变量赋值。也可以在以后的语句中为变量赋值。 int a[5]={3,4,5,6,7}; 将五个数依次赋给a数组 在定义数组时为部分变量赋值后,其他元素为0 。 int b[10]={0} int b[10]={3,2,1,0}; 将四个数依次赋给b[0]~b[3],其他元素为0 在给全部元素赋初值时,可以不用给出长度. int a[]={1,2,3,4,5},,20,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,,,21,指针,是C语言的一个重要概念 可以有效地表示复杂的数据结构 能动态分配内存 能方便地使用字符串 能有效而方便地使用数组 在调用函数时能得到多于一个的值 能直接处理内存地址,,22,指针,地址和指针 变量的指针和指向变量的指针变量 数组与指针,,,23,地址的概念,程序定义了一个变量,在编译时就给这个变量分配内存单元,内存区的每一个字节有一个编号,这就是“地址“ 在程序中通过变量名来对内存单元进行存取操作 程序编译以后已经将变量名转换为变量的地址。 scanf(“%d“,,,变量i 变量j 变量k,2000 2002 ,3010,变量i_pointer,,24,地址和指针,一个变量的地址称为该变量的指针。通过变量的地址能找到该变量在内存中的存储单元,从而得到它的值。 变量i访问方式: 直接访问:按变量地址存取变量值的方式. i=3; printf(“%d“,i); 间接访问: *表示指向,定义 i_pointer,* i_pointer * i_pointer=3; scanf(“%d“,,,25,指针,地址和指针 变量的指针和指向变量的指针变量 数组与指针,,,26,指向变量的指针变量,存放地址的变量叫做指针变量。 在一个指针变量中只能存放同一类型变量的地址。指针变量必须先定义,指定它的类型,才能使用。 基类型 *指针变量名;例如: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,指针,地址和指针 变量的指针和指向变量的指针变量 数组与指针,,,29,数组的指针和指向数组的指针变量,数组元素的指针是指数组元素的地址。 int a[10]; (定义a为包含10个整型数据的数组) int *p; (定义p为指向整型变量的指针变量) p=,a[0],a[9],&a[0],,p,,30,通过指针引用数组元素-1,可以通过指针为数组元素赋值。 int a[10], *p; p= p=p+1 此时,p指向数组a数组的第二个元素。*(p+1)=a[1],a[0],a[9],,p,a数组,,p+1,a+1,a[1],a[2],,p+i,a+i,,p+9,a+9,,31,通过指针引用数组元素-2,指向数组的指针变量也可以带下标。 例如:int a[10];int *p= 可以使用a[i]、p[i]、*(a+i)或*(p+i)引用数组中的第i+1个元素。 移动指针可以使用p++、p--,但注意指针不能超出数组元素的范围。 ++和*是同优先级,从右至左的结合方向。例如* p++和*(p++)等价 指针不允许进行乘除运算。,,32,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,,,33,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,,,34,什么时候需要结构体类型?,一类用户 自定义 的 数据类型 struct struct student { int num; char name[20]; char sex; int age; float score; char addr[ 30]; };,,35,结构体变量的定义-1,struct 结构体名 {成员表列}; 类型名 成员名 先定义结构体类型再定义变量名 struct abc { int a; char b; float c; char d[30];}; 以上定义了一个结构体类型,并指定了其中各成员的名字和它们的类型。 再有: struct abc xx1,xx2,xx3;,定义了三个变量:xx1、xx2和xx3,它们都具有struct abc的类型结构。,,36,结构体变量的定义-2,在定义类型的同时定义变量,一般形式为: struct 结构体名 { 成员表列 }变量名表列; 例如:struct abc { int a; char b; float c; char d[30]; } xx1,xx2,xx3; 结果和前面一样。,,37,结构体变量的定义-3,也可以直接定义结构体变量 struct { 成员表列 }变量名表列;,,38,结构体变量的定义-4,结构体变量的成员,可以单独使用,作用与地位相当于普通变量,成员也可以是一个结构体变量 struct date { int month;int day;int year;}; struct student {int num; char name[20]; char sex; struct date birthday; /*birthday 是struct date 类型*/ } student1, student2;,,39,结构体变量占用的内存,只有在定义变量后,才为该变量分配内存单元。结构体变量所占的内存长度等于每个成员长度之和。 #include main ( ) { struct date {int year,month,day;}today; printf(“%d\n“, sizeof(struct date)); } 运行结果:12 (VC++环境下),,40,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,,,41,结构体变量的引用,不能对结构体变量整体进行输入输出,只能对结构体变量中的成员分别进行输入和输出。 引用结构体变量中各个成员的方式为: 结构体变量名.成员名 可以对变量的成员赋值 student1.num=99082; 如果成员又是结构体类型,则要用多个成员运算符,找到最低一级的成员。 student1.birthday.month,,42,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,,,43,结构体变量的初始化,可以在定义时指定初始值 #include “stdio.h“ main () { struct student {int num; char name[20]; char sex; } a={89031, “Li Lin“,'M'}; printf(“ No. %d\n name:%s\n sex:%c\n“,a.num,a.name,a.sex); },,44,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,,,45,结构体数组,和定义结构体变量相似,只需要说明其为数组即可 struct student { int num; char name[20]; char sex; } ; struct student stu[3]; struct student { int num; char name[20]; char sex; } stu[3];,,46,结构体数组初始化,struct student {int num; char name[20]; char sex; } stu[3]={{89031, “Li Lin“,'M'}, {89032, “Liu Ying“,'M'}, {89036, “Wang Min“,'F'}};,,47,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,,,48,指向结构体类型数据的指针,一个结构体变量的指针就是该变量占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量。 指向结构体变量的指针 struct student { int num; char name[20]; char sex; float score; } ; struct student stu1; struct student *p; p= 为了方便,可以把(*p).num改用p-num来代替,以下三种形式等价: 结构体变量名.成员名 (*p).成员名 p-成员名,,49,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理单链表,,,50,动态申请内存,数组的长度是预先定义好的,在整个程序中固定不变。C语言中不允许定义动态数组。 实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定。对于这种问题,用数组的办法很难解决。为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间,也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。,,51,C语言动态内存的函数,分配内存空间函数 malloc 调用形式: (类型说明符*) malloc(size) 功能:在内存的动态存储区中分配一块长度为“size“字节的连续区域。函数的返回值为该区域的首地址。 pc=(char *)malloc(100); 释放内存空间函数free 调用形式: free(void *ptr); free(pc);,

展开阅读全文

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。