书签 分享 收藏 举报 版权申诉 / 228
上传文档赚钱

类型C语言专升本辅导整理课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5195706
  • 上传时间:2023-02-16
  • 格式:PPT
  • 页数:228
  • 大小:3.47MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《C语言专升本辅导整理课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    语言 辅导 整理 课件
    资源描述:

    1、1.对 C 语言的语法、语义有较好的理解。2.能熟练地阅读 C 源程序,并具有初步分析程序的能力。3.初步掌握结构化程序设计的方法和技巧,能从分析问题入手,设计可行的算法,进而用 C 语言编写结构良好的面向过程的程序。4.通过上机实验,掌握程序的调试和测试方法。考考 试试 要要 求求考题类型考题类型 选择题(概念、语法等):60%程序阅读题:20%程序设计题(或程序填空):20%程序设计基础,张杰敏编,高等教育出版社出版 C 语言程序设计,谭浩强编,清华大学出版社出版参考用书参考用书第一章 C语言概述C语言发展历史与特点(了解)C程序格式和结构特点(掌握)TC 环境下 C 程序的上机步骤(掌握

    2、)结构特点v函数与主函数l程序由一个或多个函数组成l必须有且只能有一个主函数main()l程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。v程序语句lC程序由语句组成l用“;”作为语句终止符v注释l/*/为注释,不能嵌套l不产生编译代码例:/*This is the main /*of example1.1*/*/非法v编译预处理命令编辑链接编译执行C程序的上机步骤程序代码的录入,生成源程序*.c语法分析查错,翻译生成目标程序*.obj与其它目标程序或库链接装配,生成可执行程序*.exe第二章 算法 算法的概念(理解)算法的表示方法(了解)组成结构化程序的三种基本结构(

    3、理解)结构化程序设计的过程(了解)算法操作步骤解决解决:做什么?怎么做?算法的特点+有穷性+确定性+可行性/有效性+有零个或多个输入+有一个或多个输出有限的操作步骤且每一步均应在合理的时间内完成,无“死循环”每一步骤通过已经实现的基本运算执行后,在有限次内得到有效的效果,无“死语句”每一条指令必须有确定的含义,无“二义性”有多种输入途径可供输入数据,以进行数据处理有多种输出途径可将运行结果输出算法的表示方法 自然语言 流程图 N-S流程图 伪代码 计算机程序语言第三章 数据类型、运算符与表达式 C 语言中数据类型的分类(了解)整型、实型、字符型、字符串常量的表示方法(掌握)符号常量的定义和使用

    4、(掌握)变量的定义、初始化(掌握)算术、赋值、复合赋值、自增、自减、逗号运算符及表达式(掌握)各类数值型数据间的混合运算(掌握)预备知识计算机中数的表示及进制转换v各种进制之间的转换l 二进制、八进制、十六进制转换成十进制字节和位v内存以字节为单元组成v每个字节有一个地址v一个字节一般由8个二进制位组成v每个二进位的值是0或1数值的表示方法原码、反码和补码v原码:最高位为符号位,其余各位为数值本身的绝对值v反码:l 正数:反码与原码相同l 负数:符号位为1,其余位对原码取反v补码:l 正数:原码、反码、补码相同l 负数:最高位为1,其余位为原码取反,再对整个数加1基本数据类型 常量与变量标识符

    5、v定义:用来标识变量名、常量名、函数名、数组名、类型名和文件名等的字符序列v组成:l只能由字母、数字、下划线组成,且第一个字符必须是字母或下划线l大小写敏感l不能使用关键字v长度:TC-最长32个字符;MS C-最长8个字符&字符常量v定义:用单引号括起来的单个普通字符或转义字符.v字符常量的值:该字符的ASCII码值转义字符及其含义:转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符v转义字符:反斜线后面跟一个字符或一个代码值表示例 转义字符举例main()printf(101 x42 Cn

    6、);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);如 A65,a97,048,n10&整型变量v占字节数随机器不同而不同,一般占一个机器字vshortintlongv可用sizeof(类型标识符)测量&实型变量vfloat:占4字节,提供7位有效数字vdouble:占8字节,提供16位有效数字&字符型变量v字符变量存放字符ASCII码vchar与int数据间可进行算术运算例 float a;a=111111.111;/*a=111111.1*/double b;b=111111.111;/*b=111111.111

    7、*/例 a=D;/*a=68;*/x=A+5;/*x=65+5;*/s=!+G /*s=33+71;*/没有字符串变量,用字符数组存放doublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换显式转换(强制转换)v一般形式:(类型名)(表达式)例 (int)(x+y)(int)x+y (double)(3/2)(int)3.6 v说明:强制转换得到所需类型的中间变量,原变量类型不变 例 main()float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);结果:x=3.600000,i=3精

    8、度损失问题较高类型向较低类型转换时可能发生学习运算符应注意:v运算符功能v与运算量关系l要求运算量个数l要求运算量类型v运算符优先级别v结合方向v结果的类型l短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符第四章 数据输入与输出 赋值语句及使用(掌握)字符输入输出(getchar函数和putchar函数)(了解)格式输入输出(scanf函数和printf函数)(掌握)dx,Xoucse,Efg%格式字符:十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中

    9、较短一种百分号本身int a=567;printf(“%d”,a);int a=255;printf(“%x”,a);int a=65;printf(“%o”,a);int a=567;printf(“%u”,a);char a=65;printf(“%c”,a);printf(“%s”,“ABC”);float a=567.789;printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;printf(“%g”,a);printf(“%”);567ff101567AABC5.677890e+02567.789000567.78

    10、9%l说明u格式字符要用小写u格式字符与输出项个数应相同,按先后顺序一一对应u输出转换:格式字符与输出项类型不一致,自动按指定格式输出例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输出结果:3 4 a=3,b=4例 main()unsigned int u=65535;printf(”u=%dn,u);输出结果:u=-1例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);v附加格式说明符(修饰符)例 scanf(“%3d%*4d%f”,&k,&f);输入 1

    11、2345678765.43 则123k,8765.43f例 scanf(“%2d%*3d%2d”,&a,&b);输入 1234567 则12a,67b例 scanf(“%3c%2c”,&c1,&c2);输入 abcde 则ac1,d c2v附加格式说明符(修饰符)例 scanf(“%4d%2d%2d”,&yy,&mm,&dd);输入 19991015 则1999yy,10 mm,15 dd例 scanf(“%d:%d:%d”,&h,&m,&s);输入 12:30:45 则12 h,30 m,45 sv输入分隔符的指定l一般以空格、TAB或回车键作为分隔符l其它字符做分隔符:格式串中两个格式符间

    12、字符例 scanf(“%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%dn”,a,b,c);输入 123 123 123 输出 a=123,b=83,c=291例 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);输入 a=12,b=24,c=36 例 scanf(“%d,%d”,&a,&b)输入 3,4 则3a,4 bv说明:l用“%c”格式符时,空格和转义字符作为有效字符输入l输入数据时,遇以下情况认为该数据结束:u遇空格、TAB、或回车u遇宽度结束u遇非法输入l输入函数留下的“垃圾”:例 int x;char ch;scanf(“%d”,&x

    13、);ch=getchar();printf(“x=%d,ch=%dn”,x,ch);执行:123输出:x=123,ch=10例 int x;char ch;scanf(“%d”,&x);scanf(“%c”,&ch);printf(“x=%d,ch=%dn”,x,ch);执行:123输出:x=123,ch=10例 int x;char ch;scanf(“%d”,&x);scanf(“%c”,&ch);或 scanf(“%*c%c”,&ch);如 scanf(“%c%c%c”,&c1,&c2,&c3);若输入abc 则ac1,c2,b c3如 scanf(“%d%c%f”,&a,&b,&c);

    14、若输入1234a123o.26 则 1234 a,a b,123 c第五/六章 C程序流程设计第五章第五章 选择结构选择结构 关系、逻辑运算符及表达式(掌握)if 语句的三种形式(掌握)switch 语句及 break 语句的使用(掌握)要求要求能编写含有 if 语句嵌套结构的程序第六章第六章 循环结构循环结构 while 语句及应用(掌握)do-while 语句及应用(掌握)for 语句及应用(掌握)break 语句在循环中的作用(掌握)continue 语句在循环中的作用(了解)要求要求能编写含有二重循环结构的程序。C语句分类if()else switchfor()while()dowhi

    15、le()continuebreakgotoreturn分支循环辅助控制程序控制语句(9种):v复合语句:用 括起来的一组语句l一般形式:数据说明部分;执行语句部分;l说明:u“”后不加分号u语法上和单一语句相同u复合语句可嵌套v说明:lfor语句中expr1,expr2,expr3 类型任意,都可省略,但分号;不可省l无限循环:for(;)lfor语句可以转换成while结构expr1;while(expr2)循环体语句;expr3;例 用for循环求 1001nn#include main()int i,sum=0;for(i=1;i=100;i+)sum+=i;printf(%d,sum)

    16、;例:#include main()int i=0;for(i=0;i10;i+)putchar(a+i);结果:abcdefghij例:#include main()int i=0;for(;i10;i+)putchar(a+i);例:#include main()int i=0;for(;i10;)putchar(a+(i+);例:#include main()int i=0;for(;i10;putchar(a+i),i+);第七章 数组 一维数组的定义、初始化及元素引用(掌握)二维数组的定义、初始化及元素引用(掌握)字符数组的定义及使用(掌握)字符串处理函数(了解)一维数组的引用v数组

    17、必须先定义,后使用v只能逐个引用数组元素,不能一次引用整个数组v数组元素表示形式:数组名下标其中:下标可以是常量或整型表达式例 int i=15;int datai;(不能用变量定义数组维数)例 int a10;printf(“%d”,a);()必须 for(j=0;j10;j+)printf(“%dt”,aj);()例 int data5;data5=10;/C语言对数组不作越界检查,使用时要 注意一维数组的初始化v初始化方式 在定义数组时,为数组元素赋初值(在编译阶段使之得到初值)int a5=1,2,3,4,5;等价于:a0=1;a1=2;a2=3;a3=4;a4=5;v说明:l数组不初

    18、始化,其元素值为随机数l对static数组元素不赋初值,系统会自动赋以0值l当全部数组元素赋初值时,可不指定数组长度如 int a5=6,2,3;(不用static初值也可为0)等价于:a0=6;a1=2;a2=3;a3=0;a4=0;如 int a3=6,2,3,5,1;()static int a5;等价于:a0=0;a1=0;a2=0;a3=0;a4=0;l只给部分数组元素赋初值 int a=1,2,3,4,5,6;编译系统根据初值个数确定数组维数)3()2(12)1(1121nFFFnFnFnnn二维数组元素的引用形式:数组名下标下标二维数组元素的初始化l分行初始化:例 int a23

    19、=1,2,3,4,5,6;a00 a01 a02 a10 a11 a12123456全部初始化l按元素排列顺序初始化 例 int a3=1,2,3,4,5;a00 a01 a02 a10 a11 a12123450第一维长度省略初始化 例 int a3=1,4,5;a00 a01 a02 a10 a11 a12100450第一维长度省略初始化 例 int a23=1,2,4;a00 a01 a02 a10 a11 a12120400部分初始化 例 int a23=1,2,3,4,5,6;a00 a01 a02 a10 a11 a12123456全部初始化 例 int a23=1,2,4;a00

    20、 a01 a02 a10 a11 a12124000部分初始化字符数组和字符串字符数组v定义 v字符数组的初始化l逐个字符赋值l用字符串常量v字符数组的引用例 char c10,ch34;例 char ch5=H,e,l,l,o;ch0Hello逐个字符赋值ch1ch2ch3ch4 例 char ch5=B,o,y;ch0Boy00逐个字符赋值ch1ch2ch3ch4 例 char ch5=“Boy”;ch0Boy00用字符串常量ch1ch2ch3ch4 例 char ch6=“Hello”;char ch6=“Hello”;char ch=“Hello”;用字符串常量ch0Helloch1c

    21、h2ch3ch40ch5 例 char diamond5=.,.,*,.,*,.,*,*,.,.,.,*,.,*,.,*,.,.,*;二维字符数组初始化.*00.*.*0*.*.*.*0.*00diamond0diamond1diamond2diamond3diamond4 例 char fruit7=“Apple”,”Orange”,”Grape”,”Pear”,”Peach”;二维字符数组初始化fruit0fruit1fruit2fruit3fruit4Apple00Orange0Grape00Pear000Peach00v字符串的输入输出l逐个字符I/O:%cl整个字符串I/O:%s例

    22、用%c main()char str5;int i;for(i=0;i5;i+)scanf(“%c”,&stri);for(i=0;i5;i+)printf(“%c”,stri);例 用%s main()char str5;scanf(“%s”,str);printf(“%s”,str);用字符数组名,不要加&输入串长度y?x:y;return(z);例 有参函数(现代风格)int max(int x,y)int z;z=xy?x:y;return(z);例 无参函数 printstar()printf(“*n”);或 printstar(void)printf(“*n”);函数的返回值返回语

    23、句v形式:return(表达式);或 return 表达式;或 return;v功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数v说明:l函数中可有多个return语句l若无return语句,遇时,自动返回调用函数l若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换-函数调用转换lvoid型函数例 无返回值函数 void s x,int y)int temp;temp=x;x=y;y=temp;main()float a,b;int c;scanf(%f,%f,&a,&b);c=max(a,b);printf(Max is%dn,c);max(floa

    24、t x,float y)float z;z=xy?x:y;return(z);函数的调用调用形式 函数名(实参表);说明:l实参与形参个数相等,类型一致,按顺序一一对应l实参表求值顺序,因系统而定(Turbo C 自右向左)例 函数说明举例main()float a,b;int c;scanf(%f,%f,&a,&b);c=max(a,b);printf(Max is%dn,c);max(float x,float y)float z;z=xy?x:y;return(z);int型函数可不作函数说明(Borland C+不行)/*ch7_5.c*/float add(float x,float

    25、 y)float z;z=x+y;return(z);main()float a,b,c;scanf(%f,%f,&a,&b);c=add(a,b);printf(sum is%f,c);被调函数出现在主调函数之前,不必函数说明/*ch7_5.c*/main()float add(float,float);/*function declaration*/float a,b,c;scanf(%f,%f,&a,&b);c=add(a,b);printf(sum is%f,c);float add(float x,float y)float z;z=x+y;return(z);float add()

    26、;例 交换两个数例 求二维数组中最大元素值float f1(int a)int b,c;.char f2(int x,int y)int i,j;main()int m,n;.a,b,c有效x,y,i,j有效m,n有效例 不同函数中同名变量main()int a,b;a=3;b=4;printf(main:a=%d,b=%dn,a,b);sub();printf(main:a=%d,b=%dn,a,b);sub()int a,b;a=6;b=7;printf(sub:a=%d,b=%dn,a,b);例 复合语句中变量#define N 5main()int i;int aN=1,2,3,4,5

    27、;for(i=0;iN/2;i+)int temp;temp=ai;ai=aN-i-1;aN-i-1=temp;for(i=0;iN;i+)printf(%d ,ai);int p=1,q=5;float f1(int a)int b,c;.int f3().char c1,c2;char f2(int x,int y)int i,j;main()int m,n;.c1,c2的作用范围p,q的作用范围int p=1,q=5;float f1(int a)int b,c;.int f3().char c1,c2;char f2(int x,int y)int i,j;main()int m,n;

    28、.c1,c2的作用范围p,q的作用范围extern char c1,c2;extern char c1,c2;c1,c2的作用范围扩展后c1,c2的作用范围扩展后c1,c2的作用范围扩展后c1,c2的作用范围扩展后c1,c2的作用范围扩展后c1,c2的作用范围扩展后第九章 预处理命令#define 命令的使用(理解)#include 命令的作用(了解)如 if(x=YES)printf(“correct!n”);else if(x=NO)printf(“error!n”);展开后:if(x=1)printf(“correct!n”);else if(x=0)printf(“error!n”);

    29、宏定义不带参数宏定义v一般形式:#define 宏名 宏体v功能:用指定标识符(宏名)代替字符序列(宏体)v宏展开:预编译时,用宏体替换宏名-不作语法检查宏体可缺省,表示宏名定义过或取消宏体v定义位置:任意(一般在函数外面)v作用域:从定义命令到文件结束v#undef可终止宏名作用域 格式:#undef 宏名例#define YES 1 main().#undef YES#define YES 0 max().YES原作用域YES新作用域v宏定义可嵌套,不能递归例#define MAX MAX+10 ()v引号中的内容与宏名相同也不置换例#define PI 3.14159 printf(“2

    30、*PI=%fn”,PI*2);宏展开:printf(“2*PI=%fn”,3.14159*2);v宏定义中使用必要的括号()例#define WIDTH 80#define LENGTH WIDTH+40 var=LENGTH*2;宏展开:var=80+40*2;()()例#define WIDTH 80#define LENGTH WIDTH+40 var=LENGTH*2;宏展开:var=80+40*2;文件包含功能:一个源文件可将另一个源文件的内容全部包含进来一般形式:#include “文件名”或#include 处理过程:预编译时,用被包含文件的内容取代该预处理命令,再对“包含”后的

    31、文件作一个源文件编译 直接按标准目录搜索“”先在当前目录搜索,再搜索标准目录可指定路径第十章 指针 地址、指针、指针变量的概念(掌握)指针变量的定义、初始化、赋值(掌握)两个与指针有关的运算符(&和*)(掌握)指针和一维数组的关系(掌握)指针和二维数组的关系(了解)指针和字符串的关系(掌握)参数为指针类型的函数应用(掌握)指针数组和指向指针的指针(了解)&与*运算符v含义含义:取变量的地址单目运算符优先级:2结合性:自右向左含义:取指针所指向变量的内容单目运算符优先级:2结合性:自右向左v两者关系:互为逆运算v理解.2000200420062005整型变量i10变量i_pointer20012

    32、00220032000指针变量i_pointer-指针变量,它的内容是地址量*i_pointer-指针的目标变量,它的内容是数据&i_pointer-指针变量占用内存的地址200010i_pointer*i_pointer&i_pointerii_pointer&i&(*i_pointer)i *i_pointer *(&i)i_pointer =&i =&(*i_pointer)i =*i_pointer =*(&i)指针变量指针变量与其所指向的变量之间的关系指针变量的定义v一般形式:存储类型 数据类型 *指针名;3变量i2000i_pointer*i_pointeri*i_pointer&

    33、ii_pointeri=3;*i_pointer=33变量i2000i_pointer*i_pointeri*i_pointer&ii_pointeri=3;*i_pointer=3合法标识符指针变量本身的存储类型指针的目标变量的数据类型表示定义指针变量不是*运算符例 int*p1,*p2;float *q;static char *name;注意:1、int *p1,*p2;与 int *p1,p2;2、指针变量名是p1,p2,不是*p1,*p23、指针变量只能指向定义时所规定类型的变量4、指针变量定义后,变量值不确定,应用前必须先赋值指针变量的初始化一般形式:存储类型 数据类型 *指针名=

    34、初始地址值;赋给指针变量,不是赋给目标变量例 int i;int *p=&i;变量必须已说明过类型应一致例 int *p=&i;int i;例 int i;int *p=&i;int *q=p;用已初始化指针变量作初值例 main()int i;static int *p=&i;.()不能用auto变量的地址去初始化static型指针v一级指针变量与一维数组的关系int *p 与 int q10 l数组名是指针(地址)常量lp=q;p+i 是qi的地址l数组元素的表示方法:下标法和指针法,即若p=q,则 pi qi *(p+i)*(q+i)l形参数组实质上是指针变量,即int q int*ql

    35、在定义指针变量(不是形参)时,不能把int *p 写成int p;l系统只给p分配能保存一个指针值的内存区(一般2字节);而给q分配2*10字节的内存区指针与二维数组v二维数组的地址对于一维数组:(1)数组名array表示数组的首地址,即array0的地址;(2)数组名array是地址常量(3)array+i是元素arrayi的地址(4)arrayi *(array+i)arrayint array10;指针与字符串字符串表示形式v用字符数组实现例 main()char string=“I love China!”;printf(“%sn”,string);printf(“%sn”,strin

    36、g+7);IloveChistring0string1string2string3string4string5string6string7string8string9stringstring10string11string12string13n!a0v用字符指针实现例 main()char *string=“I love China!”;printf(“%sn”,string);string+=7;while(*string)putchar(string0);string+;IloveChistringn!a0字符指针初始化:把字符串首地址赋给string char *string;strin

    37、g=“I love China!”;string*string!=0字符串指针作函数参数例 用函数调用实现字符串复制(1)用字符数组作参数(2)用字符指针变量作参数aIamateaceh0r.fromabyuarasutndetoboet.0Iaaeceh0r.t.0mtavoid copy_string(char from,char to)int i=0;while(fromi!=0)toi=fromi;i+;toi=0;main()char a=I am a teacher.;char b=You are a student.;printf(string_a=%sn string_b=%s

    38、n,a,b);copy_string(a,b);printf(nstring_a=%snstring_b=%sn,a,b);void copy_string(char*from,char *to)for(;*from!=0;from+,to+)*to=*from;*to=0;main()char*a=I am a teacher.;char*b=You are a student.;printf(string_a=%snstring_b=%sn,a,b);copy_string(a,b);printf(nstring_a=%snstring_b=%sn,a,b);指针数组和多级指针用于处理二维

    39、数组或多个字符串指针数组v定义:数组中的元素为指针变量v定义形式:存储类型 数据类型*数组名数组长度说明;例 int *p4;指针所指向变量的数据类型指针本身的存储类型区分int *p4与int (*p)4v指针数组赋值与初始化赋值:main()int b23,*pb2;pb0=b0;pb1=b1;.int *pb2pb0pb1int b23123246初始化:main()int b23,*pb=b0,b1;.int *pb2pb0pb1int b23123246二维数组存储空间固定字符指针数组相当于可变列长的二维数组分配内存单元=数组维数*2+各字符串长度指针数组元素的作用相当于二维数组的行

    40、名但指针数组中元素是指针变量二维数组的行名是地址常量l定义形式:存储类型 数据类型 *指针名;如 char *p;例 int i,*p;p=&i;()/p是二级指针,不能用变量地址为其赋值指针本身的存储类型最终目标变量的数据类型*p是p间接指向对象的地址*p是p间接指向对象的值例 int i=3;int *p1;int *p2;p1=&i;p2=&p1;*p=5;ip1p23&i&p1*p2,*p1*p2v多级指针例 三级指针 int *p;四级指针 char *p;第十一章 结构体、共用体和枚举类型 结构体类型的定义(掌握)结构体变量、数组、指针变量的定义、初始化及成员引用(掌握)参数为结构

    41、体变量或结构体指针的函数(理解)共用体的概念及共用体类型的定义(了解)枚举类型的概念及共用体类型的定义(理解)typedef 语句的使用(了解)例 struct student int num;char name20;char sex;int age;float score;char addr30;struct student stu1,stu2;结构体变量的定义先定义结构体类型,再定义结构体变量v一般形式:struct 结构体名 类型标识符 成员名;类型标识符 成员名;.;struct 结构体名 变量名表列;例#define STUDENT struct student STUDENT in

    42、t num;char name20;char sex;int age;float score;char addr30;STUDENT stu1,stu2;说明v结构体类型与结构体变量概念不同l类型:不分配内存;变量:分配内存l类型:不能赋值、存取、运算;变量:可以v结构体可嵌套v结构体成员名与程序中变量名可相同,不会混淆v结构体类型及变量的作用域与生存期例 struct date int month;int day;int year;struct student int num;char name20;struct date birthday;stu;numnamebirthdaymonthd

    43、ayyear例 struct student int num;char name20;struct date int month;int day;int year;birthday;stu;numnamebirthdaymonthdayyear结构体变量的引用引用规则v 结构体变量不能整体引用,只能引用变量成员v可以将一个结构体变量赋值给另一个结构体变量v结构体嵌套时逐级引用成员(分量)运算符优先级:1结合性:从左向右引用方式:结构体变量名.成员名例 struct student int num;char name20;char sex;int age;float score;char add

    44、r30;stu1,stu2;stu1.num=10;stu1.score=85.5;stu1.score+=stu2.score;stu1.age+;例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;printf(“%d,%s,%c,%d,%f,%sn”,stu1);()stu1=101,“Wan Lin”,M,19,87.5,“DaLian”;()例 struct student int num;char name20;char sex;int age;float s

    45、core;char addr30;stu1,stu2;stu2=stu1;()例 struct student int num;char name20;struct date int month;int day;int year;birthday;stu1,stu2;numnamebirthdaymonthdayyearstu1.birthday.month=12;例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;if(stu1=stu2).()结构体数组结构体数组的定

    46、义三种形式:形式一:struct student int num;char name20;char sex;int age;struct student stu2;形式二:struct student int num;char name20;char sex;int age;stu2;形式三:struct int num;char name20;char sex;int age;stu2;numnamesexagenumnamesexagestu0stu125B结构体数组初始化例 struct int num;char name20;char sex;int age;stu=,;顺序初始化:s

    47、truct student int num;char name20;char sex;int age;struct student stu=100,“Wang Lin”,M,20,101,“Li Gang”,M,19,110,“Liu Yan”,F,19;例 struct student int num;char name20;char sex;int age;stu=,;分行初始化:struct student int num;char name20;char sex;int age;struct student stu=100,“Wang Lin”,M,20,101,“Li Gang”,M

    48、,19,110,“Liu Yan”,F,19;全部初始化时维数可省结构体数组引用引用方式:结构体数组名下标.成员名 struct student int num;char name20;char sex;int age;str3;stu1.age+;strcpy(stu0.name,”ZhaoDa”);结构体和指针指向结构体变量的指针v定义形式:struct 结构体名 *结构体指针名;例 struct student *p;v使用结构体指针变量引用成员形式存放结构体变量在内存的起始地址numnamesexagestupstruct student int num;char name20;cha

    49、r sex;int age;stu;struct student *p=&stu;(*结构体指针名).成员名结构体指针名-成员名结构体变量名.成员名指向运算符优先级:1结合方向:从左向右例 指向结构体的指针变量main()struct student long int num;char name20;char sex;float score;stu_1,*p;p=&stu_1;stu_1.num=89101;strcpy(stu_1.name,Li Lin);p-sex=M;p-score=89.5;printf(nNo:%ldnname:%snsex:%cnscore:%fn,(*p).nu

    50、m,p-name,stu_1.sex,p-score);例 int n;int *p=&n;*p=10;n=10struct student stu1;struct student *p=&stu1;stu1.num=101;(*p).num=101指向结构体数组的指针例 指向结构体数组的指针struct student int num;char name20;char sex;int age;stu3=10101,Li Lin,M,18,10102,Zhang Fun,M,19,10104,Wang Min,F,20;main()struct student*p;for(p=stu;pnum

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:C语言专升本辅导整理课件.ppt
    链接地址:https://www.163wenku.com/p-5195706.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库