版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言与面向对象编程,面向对象编程的编程基础结构化编程稳健性设计,第二章编程基础,基本C语法数据类型运算符和表达式基本语句,本章的要求和目标:复习C与C的相同知识点,掌握不同知识点数据类型常量变量的定义和初始化方法及内容,基本C语法格式数据类型运算符和表达式基本语句,2.1基本C语法格式,C严格区分大小写, C是一种自由形式的语言,当用C语言编程时,程序写起来非常自由,甚至整个函数体都可以写在一行上。 但是这样做的话,人们很难理解这个项目是不是有点长。2.1基本的C语言语法格式,严格区分大小写,C语言是自由格式的语言,基本的编写原则如下:1。当一个长语句不能写在一行中时,你可以在一行中写多行。
2、分支原则是你不能把一个词分开。双引号引用的字符串和宏定义不能写在一行上。如果需要延续一行,应该使用延续字符。2.当写C程序时,使用漂亮的“缩进”格式来写。2.1基本c语法格式(续),良好的编程习惯:一条长语句可以分成几行,如果一条语句必须这样划分,请选择最合适的断点。例如,对于用逗号分隔的列表,您可以选择在逗号后断开连接;对于更长的表达式,考虑在操作符之后中断,等等。将一条语句分成多行后,除第一行之外的所有行都会缩进。2.1基本c语法格式(续),良好的编程习惯:对于缩进比例,同意你喜欢的大小,然后一致地应用它。制表符可以用来生成缩进,但制表符间距可能不同。我们建议使用1/4英寸(1英寸=2.5
3、4厘米)的制表间距,或者(更恰当地)使用3个空格来形成缩进层次。2.1基本c语法格式(续),c程序的注释功能:提高程序的可读性;调试程序/和/* */,软件编码规范说:“可读性第一,效率第二。”程序中必须包含适当的注释,以提高程序的可读性和可维护性。程序注释一般占程序代码总数的20%-50%。2.1基本c语法格式(续),良好的编程习惯:每个程序都应该以注释开始,因为它描述了程序的目的、作者、日期和时间。/程序:显示问候/作者: Ima程序员/日期: 1/24/2001,/程序:显示问候/作者: Ima程序员/日期: 1/24/2001 #包括使用命名空间标准;你好,世界!endl返回0;2.1
4、基本c语法格式(续)、2.1基本c语法格式(续)、c语言中的标识符,它们是用于表示变量名、函数名、数组名、类名等的有效字符序列。标识符的命名应遵循合法性、有效性和易读性的原则。良好的编程习惯:选择有意义的标识符将有助于程序“自我注释”。人们可以理解程序,而不需要求助手册或注释。2.1基本c语法格式(续),标识符的命名规则由字母、数字和下划线组成,以字母或下划线作为第一个字符,后跟零个或多个字母、数字和下划线。大写字母和小写字母代表不同的标识符,不能与关键字相同。2.1基本C语法格式(续),良好的编程习惯:避免使用以下划线和双下划线开头的标识符,因为C编译器可能会在内部使用这种形式的名称。可移植
5、性提示:C语言本身允许任何长度的标识符,但是您的系统和/或特定的C实现可能对标识符的长度有一些限制。因此,请使用31个字符以内的标识符,以确保可移植性。c关键字(见P9书)预定义的标识符,由c编译器专门处理。,2.1基本C语法格式(续),内容,基本C语法格式数据类型运算符和表达式基本语句,2.2 C数据类型,数据是程序处理的对象,在C语言中,所有数据对象都属于某一数据类型。基本数据类型,int字符类型(char,wchar_t),浮点类型(double),逻辑类型(bool)(bool)void type(void):用于函数和指针,基本数据类型,为了更准确地描述数据类型,提供了四个关键字来修
6、改基本数据类型,这四个关键字是常量、文字常量、符号常量和在程序中直接写出常量值的常量的两种表示形式。常数,整数常数,整数常数是文字形式的整数,包括三种形式。各种表达式前面都可以有正或负的符号来表示正或负的值,正的符号可以省略。实常数,实常数只能用十进制表示,有两种表示形式。字符常量通常指用单引号括起来的字符,其数据类型是char。单引号仅用于表示它所包含的字符是字符常量,而不是字符常量的内容。例如,在C #语言中,也有一种转义序列的表示方法,可以用来表示字符常量。在编写字符常量时,可显示字符通常由字符本身编写,而不可显示字符(控制字符)和特殊用途字符由转义序列表示。此外,应特别注意以下字符:反
7、斜杠()应写成单引号()应写成双引号()应写成或,字符串常量,也称为字符串或字符串常量,是由一对双引号括起来的字符序列。示例:xyz,我是一名学生,这是一个字符串。由于双引号在字符串中用作分隔符,如果双引号需要出现在字符串中,必须采用转义序列。字符串和宏定义了一行不能被写入,当一行需要继续时需要一个行继续符。“这是一根绳子! MNP 、#定义containing _ record(地址、类型、字段)(类型*) (pchar)(地址)-(uint _ ptr)(表示nX和nY是整数变量,它们的初始值分别为1和3。变量初始化,内容,基本C语法格式数据类型运算符和表达式基本语句,2.3运算符和表达式
8、,用C语言进行类型转换(隐式和显式)(算术、关系、逻辑、位、赋值、大小、条件、逗号)操作数,注意运算符的优先级和组合,以及良好的编程习惯:在二进制运算符的两端添加空格。这可以突出操作者并增强程序的可读性。2.3运算符和表达式,良好的编程习惯:编写包含多个运算符的表达式时,请务必参考运算符优先级表。如果表达式太复杂而无法确定顺序,可以将表达式分成几个小语句,或者简单地用括号强制顺序。内容,基本C语法格式数据类型运算符和表达式基本语句,简单语句,结构语句,表达式语句,转移语句,空语句,goto语句,break语句,continue语句,return语句,复合语句,selection语句,loop语
9、句,if语句,switch语句,while语句,do-while语句,For语句,2.4基本语句,C语言和面向对象编程,程序设计基础面向对象编程的结构化编程健壮性设计,第三章结构化编程,函数数组指针和对其他复合数据类型的引用, 本章的要求和目标:复习C和C的相同知识点,掌握知识点不同部分内联函数变量的存储和分配,分配C程序多模块结构标识符的范围。 本章要求(续)知识点中具有默认参数值的函数重载指向常量的指针和指向常量引用的指针、内容、函数数组指针和指向其他复合数据类型的引用,3.1函数、函数是可以完成独立函数的子程序,即程序模块。每个C程序至少包含一个函数,即主函数。3.1函数(续),在面向对
10、象编程中,一个C程序是由类实例(对象)组成的。函数主要用于定义对象的操作界面。在面向过程的程序设计中,一个复杂的程序通常被分解成一个主模块和几个子模块的组合,即一个主功能和几个子功能。一个程序由一个或多个函数组成。3.1函数(续),3.1函数(续),函数定义,在C程序中,以如下格式定义一个函数:类型函数名(形式参数表)语句序列,形式参数表由0,1个或多个参数组成,内容如下:类型1形式参数名1,类型2形式参数名2,类型n形式参数名n,函数定义,s=a * b;返回s;函数定义示例,函数定义注释:声明函数,一般使用声明函数的原型。形式如下:类型函数名(形式参数表);例如:双矩形区域(双a,双b);
11、双矩形区域(双,双);函数声明、函数调用和函数调用的一般形式如下:函数名(实际参数表)。程序中调用的所有函数都必须有定义。如果函数是在其他文件中定义的(比如C语言的标准库),或者是在原始文件的使用点之后定义的,那么需要在调用之前声明被调用的函数。main()完成调谐fun(),fun()返回,Save:返回地址当前站点,恢复:调用主调谐器站点返回地址,函数,进程内存空间,esp,EIP,0xc00000,0x80000。返回地址、已保存的已保存寄存器、局部变量和临时变量、参数构造区域、前一帧、调用方帧、当前帧、地址增加、堆栈底部、堆栈顶部、帧指针堆栈指针%esp、函数调用过程的三个步骤、调用参
12、数和返回地址(当前EIP)被推,当前EBP被推至函数入口,并开始执行。跳转至返回地址、低位地址方向和堆栈中保存的其他数据,如已调函数的局部变量EIP, 已调函数的参数,其他数据,如上部函数的局部变量,SHE指针,高位地址方向,EBP,窗口系统堆栈,函数调用,函数调用过程示例,2,1,ret-add,EBP,Retval,堆栈!地址方向,其它数据,例如调谐函数的局部变量,EIP,调谐函数的参数,其它数据,例如上部函数的局部变量,SEH指针,高地址方向,EBP,缓冲区溢出,缓冲区,用于临时存储数据的存储区字符缓冲器256;缓冲区=malloc64溢出数据太长,无法存储在预期的区域中,覆盖了存储其他
13、数据的区域strcpy(smallBuffer,bigString),缓冲区溢出,缓冲区溢出:当计算机用数据填充缓冲区时,它超出了缓冲区本身的容量,溢出数据覆盖了合法数据。,缓冲区溢出,缓冲区溢出分类堆栈溢出发生在堆栈内存中覆盖堆栈结构堆栈溢出发生在堆栈内存中覆盖指定的四字节指针,堆栈缓冲区溢出,典型问题程序Void vul func(char * str)char Buffer 8;strcpy(缓冲区,字符串);void main(int argc,char * * argv)if(arg C1)vul func(arg v1);safe函数可以限制所操作的数据长度,而函数strncpy()、memcpy()、snprintf()、strncat()、堆栈缓冲区溢出、strncpy (dstbuffer、srcbuffer、sizeof (dstbuffer)-1)在正确使用时不会导致缓冲区问题;堆栈缓冲区溢出,字符串截断复制函数陷阱(如strcpy (dstbuffer,srcbuffer,sizeof (srcbuffer)-1) strncpy)未正确使用。如果源字符串长度大于或等于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购零部件验收制度
- 采购验收保管药品制度
- 量化采购绩效激励制度
- 钣金采购制度
- 2025年前台岗位专项考核卷
- 硅基OADC芯片的关键技术研究
- 河南水利与环境职业学院2026年单独招生《职业技能测试》模拟试二(中职生)
- 道法公有制为主体、多种所有制经济共同发展课件-2025-2026学年统编版道德与法治八年级下册
- 《后赤壁赋》教案3
- 田径运动会开幕词集锦
- 2026-2028年中国冰棍行业生态全景与战略纵深研究报告:政策、技术、资本与消费四重驱动下的产业重构与机遇地图
- 江苏苏州市2025-2026学年高二上学期期末考试英语试题(含答案)
- 国家职业资格认证考试报名试题及答案
- 公司级安全教育培训考试卷测试题(答案)
- (正式版)DB51∕T 2732-2025 《用材林培育技术规程 杉木》
- 《西游记知识竞赛》题库及答案(单选题100道)
- DB34∕T 5225-2025 风景名胜区拟建项目对景观及生态影响评价技术规范
- 2026年苏州工业职业技术学院单招职业技能测试必刷测试卷附答案
- 2025年陕西省中考化学试题答案解读及备考指导课件
- 新市民课件教学课件
- GB/T 20013.1-2025核医学仪器例行试验第1部分:γ辐射计数系统
评论
0/150
提交评论