收藏 分享(赏)

C与Java对照总结.ppt

上传人:hwpkd79526 文档编号:7321749 上传时间:2019-05-14 格式:PPT 页数:26 大小:432.50KB
下载 相关 举报
C与Java对照总结.ppt_第1页
第1页 / 共26页
C与Java对照总结.ppt_第2页
第2页 / 共26页
C与Java对照总结.ppt_第3页
第3页 / 共26页
C与Java对照总结.ppt_第4页
第4页 / 共26页
C与Java对照总结.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、数 据 结 构,主讲:鲁法明 fm_,课程相关,计算机学科核心课程 多编程(手写),多调试(上机),本章要点,补充:Java与C对照总结,适用范围与特点 C程序概述语法对照 C指针与链表,1.1 适用范围及特点,1.2 C程序概述,void main( ) /*程序入口,主函数 */ printf(“Hello World! ”); /*调用标准输出函数输出*/ ,C程序由函数构成,main函数是程序入口 函数包括函数首部和函数体两部分 函数体以作为开始和结束的标志 输入输出用库函数实现,需包含相应头文件 语句以分号结束,文件包含等除外,换行无关 程序中可用/*/加注释,单行亦可用/,#inc

2、lude/*标准输入输出头文件,类似import*/,例1.1 输出HelloWorld.,例1.2 令a=123,b=456,求两整数之和,# include void main( ) int a,b,sum; a=123;b=456;sum=a+b;printf(“变量sum值为%d”,sum); /*格式控制符%d,%c,%f*/ ,函数体分声明部分和执行部分 变量必须先定义后使用 定义变量实际就是在内存空闲区域中分配存储单元,对变量名赋值或取值就是对该存储单元进行读写,存储单元地址通过,例1.3输入2个数输出大者,定义max函数求大者,# include void main( ) in

3、t a,b,c;scanf(“%d,%d”,/回车n ,函数分main函数、库函数和自定义函数 函数首部包括返回值类型 函数名 参数及其类型 若函数的具体定义出现在使用语句之后,则必须 在使用前进行声明,int max(int x, int y)/*形参*/ int z;if(xy)z=x; /* 分支语句*/else z=y;return(z); ,int max(int x,int y);/*函数声明*/,C程序结构小结:,#include #define void main( ) /函数次序可调 子函数声明与变量定义执行语句组返回值类型 函数名1(参数表)变量定义与函数声明执行语句组.

4、返回值类型 函数名n(参数表)变量定义与函数声明执行语句组,结构:由若干函数(main函数、库函数、自定义函数)组成,main函数是程序入口。 函数包括函数首部和函数体两部分,函数体包括声明部分和执行部分,声明部分包括变量定义和函数的声明,执行部分包括各类语句。函数不能嵌套定义,函数与变量不能重名,找出以下源程序中存在的9处错误:,int max( x, y)int z; if(xy)z=x; else z=y; return(z); void main scanf(“%d,%d”, a, b); /*读入两整数,用逗号分隔c=max(a,b); printf(“max=%cn”,c) ,#i

5、nclude,;,int a,b,c;,*/,& &, ,( ),是否需要进行函数声明int max(int x,int y);,%d,1、变量未定义或函数使用前未声明,缺少头文件 2、丢分号和,int int,1.3 语法对照数据类型,1.3 语法对照运算符,1.3 语法对照控制结构,1.3 语法对照函数,值传递参数,1.3 语法对照函数,参数引用传递,1.4 指针与链表,谭浩强-C程序设计(第3版)-第十章指针,基本概念 指针的定义及用法 指针在数组访问中的应用 利用指针创建动态数组 利用指针创建和操作链表,内存区的每一个字节有一个编号,该编号称为内存单元的地址或指针。若在程序中定义一个变

6、量,在编译时会给其分配若干内存单元,其中第一个存储单元的编号称为该变量的地址或指针,int i; short j,k; scanf(“%d %d”,直接访问:通过变量名存取值的方式 间接访问:将变量的地址存放在另一变量(p)中,通过p访问变量,short *pp=scanf(“%d”,p),地址 指针 变量的地址 指针变量,某些变量专门用以存放别的变量的地址,称这类变量为指针变量,该类变量的类型称为指针类型,定义格式:基类型 *指针变量名 如:short j; short *p; p=,(1)通过指针对变量进行读写时如何知道需要读写的字节数?在定义指针变量时必须指定基类型,且变量的类型和指针的

7、基类型要一致! (2)指针类型与整数类型不同.只能将变量的地址赋给一个指针变量,而不能将一个常数赋给一个指针变量(零除外,代表NULL空地址)。此外,指针变量加减1,则指针指向的单元变动并非1,而是基类型所占字节数,即以sizeof(基类型)为一个移动单位 (3)指针运算符*在定义变量时用于指明所定义变量是指针类型,在普通语句中用于取指针变量所指向存储单元的值.如 printf(“%d”,*p);,指针变量的定义与用法,回顾,C程序由函数构成,包括main函数、库函数和自定义函数.函数不能嵌套定义,若先使用后实现,则需声明,库函数的声明在头文件中 C语言中数组在定义时必须同时指定大小,而且大小

8、必须为常数,不能为变量 C语言中函数参数传递为值传递,C+中新加引用传递 C语言中无boolean类型,0代表假,非零代表真 C语言中有指针类型,指针变用以存储其它变量的地址,基类型决定能存储何类变量的地址. int i; int *p; p=,C语言中,一维数组的数组名是指向数组首元素的指针常量,该指针常量的基类型与数组元素的类型相同,指针常量的值是数组的起始地址。可通过数组名用下标法访问数组元素,如果将该指针常量赋值给一个相应类型的指针变量,则也可借助指针变量用指针法访问数组元素,指针法访问数组,如: int a10; int *p=a ; /*也可用 int *p=说明:指针加1或减1则

9、指针指向的单元移动并非1,而是根据基类型所占字节数移动。指针法速度比下标法快,利用指针创建动态数组,静态数组,void main()int a10;/a为指针常量for(int i=0;i10;+i)scanf(“%d”, ,void main()int a10;int *p;for(p=a;pa+10;+p)scanf(“%d”,p);for(p=0;pa+10;+p)printf(“%dn”,*p); ,动态数组,void main()int *a;/a为指针变量,可类似数组名用a=(int *)malloc(10*sizeof(int);for(int i=0;i10;+i)scanf(

10、“%d”, ,void main()int *a;a=(int *)malloc(10*sizeof(int); int *p;for(p=a;pa+10;+p)scanf(“%d”,p);for(p=0;pa+10;+p)printf(“%dn”,*p); /此程序中p可换作a,但a最好不变,动态存储分配函数 #includevoid * malloc(unsigned size); void free(void *p);,孙承爱-程序设计基础(基于C语言)-链表,引言:数组元素依次存储在一片连续的内存单元中,这为成批数据存储带来两方面问题:其一,个数不确定时需定义一个最大长度;其二,向数组

11、增加或删除一个数据时,需要移动大量元素。 链表:一种动态地进行存储分配的数据结构,不需要事先确定最大长度,在插入或者删除一个元素时也不会引起大量数据的移动 要求:掌握链表的基本结构、结构定义与链表的创建与输出,链表结构:,【结构】 “首”结点+“尾”结点+中间结点,每个结点包括两部分:一部分是用户需要用的实际数据,称为数据域;另一部分是下一个结点的地址,称为指针域。头指针head指向链表的首结点,首结点与中间结点的指针域指向后继结点,表尾结点的指针域存放空地址(常表示为NULL,是值为0的符号常量,编程时需先定义)。,【说明】(1)链表中各元素在内存中的存储单元通常不连续(2)头指针至关重要,

12、可标识或者代表整个单链表,声明一个链表实际就是声明一个基类型为结点类型的头指针,struct LNode /单链表结点结构定义char data; /数据域struct LNode * next;/指针域; Strcut LNode node1,node2;/定义两个结点 struct LNode* La,Lb; /定义两个链表 /或typedef struct LNode LNode /typedef struct LNode* LinkList; /LNode node1,node2; LinkList La,Lb;,/元素类型定义 typedef char ElemType; /-链表定

13、义- typedef struct LNodeElemType data; /数据域struct LNode * next; /指针域 LNode,* LinkList;LNode node1,node2; LinkList La,Lb;,链表定义:,链表的创建,void CreateList(LinkList ,链表的输出,void PrintList (LinkList L)LNode *p=L;while(p!=NULL)printf(“%cn”, p-data) );p=p-next; /思考+p为何不可 ,练习与作业,在主函数中定义含N个元素的整型数组并输入各元素的值,之后分别调用如下函数并测试 sum函数求数组各元素值的总和 average函数求各元素平均值作业 删除数组首元素,其后元素依次前移 插入首元素-1,原有元素后移作业 inverse函数进行逆置 设单链表中数据元素是student类型, 主函数创建含N个元素的链表并实现以下操作 取单链表第i个结点的值用引用型参数e带回 分别编写函数删除单链表第一、第二个结点作业 分别编写函数在单链表表头和第二个结点前插入一个新结点,

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

当前位置:首页 > 实用文档 > 工作总结

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报