第4部分 常量 变量和数组

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第四部分常量和变量constants&variables北京交通大学计算机与信息技术学院教师:林友芳本部分内容介绍高级语言中常见的各种常量数字常量、字符常量、字符串常量、符号常量、枚举常量的表示或定义方法变量概念,定义方法,命名规则或规范C语言变量的赋值、初始化和使用变量的属性指针变量构造数据类型的基本概念一维数组、字符数组二维数组初步概念、定义和使用方法结构体联合北京交通大学计算机与信息技术学院教师:林友芳运算是计算机程序的各种计算操作数据是程序的运算对象与代数运算表达式相仿,高级语言中的运算对象也分为常量和变量,常量和变量都可以出现在表达式中,如y=x+5;运算与运算对象一、常量北京交通大学计算机与信息技术学院教师:林友芳1.常量的概念和分类常量程序中直接给定值在程序运行过程中不可以改变的量。各种常量数字常量字符常量字符串常量符号常量枚举常量北京交通大学计算机与信息技术学院教师:林友芳2.回忆数字常量数字常量表示参与计算的数值,既可以是整数,也可以是带小数的实数。整数表示方法十进制如:90、255八进制(以0开头)如:0123十六进制(以0x开头)如:0x5a、0x23ff实数表示方法整数部分或小数部分为0时,可以不写数字0,如以下表示如:0.12.23(0.23)1.454.96.(6.0)科学表示法如:0.12E35.6E-6-7.6E12单精度实数表示如:4.5f6.3F0.123E3f5.6E-6F实数类型默认为双精度实数北京交通大学计算机与信息技术学院教师:林友芳2.回忆字符常量定义用一对单引号‘’知起来的单个字符字符分类可见字符如:字母、数字、标点等。不可见字符如:控制光标移动、使终端发出振铃声音的各类字符。表示如:‘0’‘z’‘\n’‘\t’换行符横向制表符(Tab)北京交通大学计算机与信息技术学院教师:林友芳字符换码序列换码序列含义换码序列含义\a响铃符\v纵向制表符\b退格符\\反斜线\f换页符\?问号\n换行符\’单引号\r回车符\”双引号\t横向制表符北京交通大学计算机与信息技术学院教师:林友芳3.回忆字符串常量定义用一对双引号(“)引起来的0个或多个连续的字符,但不包括双引号。当字符串中包含双引号时,需要用\”来表示。举例“Thisisastring\n”“\”isadoublequote”在计算机中存储时以空字符‘\0’结束,但在字符串常量中不需要直接表示这个空字符。字符串中可以包含换行符表示双引号北京交通大学计算机与信息技术学院教师:林友芳4.符号常量符号常量:用符号代表一定的常量符号可以是任意的合法标识符,但习惯使用大写字母和下划线组成的标识符。用宏命令#define定义符号常量#definePI3.14159265375也可以定义常量表达式#defineTIMES(NUM/4)优点有助于提高程序的可读性便于记忆和使用有助于发现和减少程序中的错误提高程序的可维护性最好根据常量的用途和含义对常量命名是一个编译预处理命令,它所定义的符号常量在预编译阶段被替换为对应的字符串。必须是已定义过的符号常量北京交通大学计算机与信息技术学院教师:林友芳例//计算并输出半径为2.5米的圆的面积#definePI3.14159265375main(){printf(“Area=”,PI*2.5*2.5);return0;}北京交通大学计算机与信息技术学院教师:林友芳5.枚举常量定义枚举常量是一种用符号表示的整型数字常量,且有标识符表示。使用关键字enum定义enum{A,B,C,D,E=50,F,G,H,I};enum{JAN=1,FEB,MAR,APR,MAY,JUN,JLY,AUG,SEP,OCT,NOV,DEC};如果枚举常量后面给定了值,则以给定值作为枚举符对应的常量值。当枚举符后面没有给定值,只是一个标识符时,该枚举常量的值等于其前面枚举常量的值加1。如果该枚举常量是一个标识符时且没有给定值,该枚举常量的值等于0。北京交通大学计算机与信息技术学院教师:林友芳枚举量与符号常量的意义用文字符号的形式表示常量有利于更好地理解程序意义。例如,程序里两个0可能会代表不同意义,它们在数值形式上没有任何区分。但是,采用符号常量可提高可读性,便于理解。高级语言提供了用符号表示常量的办法,在程序中统一使用。好处使程序更容易修改和阅读二、变量及其属性北京交通大学计算机与信息技术学院教师:林友芳1.变量—概念、定义和使用变量程序运行过程中可以发生变化的量存储数据的命名对象(变量名)变量名是标识符。使我们可能通过一个名字来使用存储单元变量的特点变量能保存值,不会丢失。给某变量名是标识符。变量的值可以变化变量赋一个值之后,每次使用它总得到这个值,直到下次赋值。对变量基本操作赋值(写)取值(读)注意:要遵循命名规范北京交通大学计算机与信息技术学院教师:林友芳2.变量的类型和定义变量有固定的类型,只能保存这个类型的值。整型变量(保存int值的变量)双精度变量(保存double值)字符变量,…变量定义变量必须先定义后使用需要给出变量名和类型。例intm;doublex;可以同时定义多个同类型的变量intk,n,sum,count;longdoubley,z;为什么要给出类型?不给行不行?有不给的吗?能定义一种变量存什么数据都行吗?北京交通大学计算机与信息技术学院教师:林友芳3.变量的命名关键字不能当做变量名变量的命名最好能反映变量的实际含义一些行业规范里,变量命名一般还应反应变量的类型,有些变量命名还要反应变量的地位(如类属性、全局变量)变量命名要求参见编码规范北京交通大学计算机与信息技术学院教师:林友芳4.复合结构内的局部变量复合结构中可以定义局部变量,在内部使用变量定义应出现在所有语句之前{变量定义序列语句序列}有些C++没有这个要求一个复合结构里不能定义多个同名的变量。北京交通大学计算机与信息技术学院教师:林友芳5.变量的取值与赋值取值:计算中遇到变量,取其值参与计算x+sin(3.2*y)-pow(x,2)赋值用赋值运算符(=,赋值号)表示赋值语法Variable=Expression//赋值表达式x=5.0左边是赋值目标,右边是提供值的表达式赋值运算的主要效果是把表达式的值赋给左边变量赋值运算符优先级很低。例x=2+3*y北京交通大学计算机与信息技术学院教师:林友芳赋值语句赋值语句Variable=Expression;最基本的语句,完成程序里最重要的操作程序中一般用赋值语句描述赋值动作例重写由三边求三角形面积的程序计算中多次用半周长,定义变量保存这个值,可避免重复计算。北京交通大学计算机与信息技术学院教师:林友芳变量的最主要用途:保存计算的中间结果#includestdio.h#includemath.hintmain(){doubles;s=(3.+5.+7.)/2.;printf(Area:%f\n,sqrt(s*(s-3.)*(s-5.)*(s-7.)));return0;}用于保存中间结果北京交通大学计算机与信息技术学院教师:林友芳赋值运算符的值与结合性Variable=Expression整体上被称为赋值表达式赋值表达式也有值,就是右边表达式的值。赋值表达式的值通常不用,但赋值表达式的值也可以用,例y=(x=5)+8;有时可以用同一表达式为多个变量赋值。y=(z=(x=1.0));赋值运算符的结合律从右向左结合y=z=x=1.0;简化北京交通大学计算机与信息技术学院教师:林友芳赋值与类型给定赋值表达式Variable=Expression左边变量和右边的表达值都有类型规定若表达式值与被赋值变量类型不同,该值先转换到变量类型的值,然后赋值。在前面程序例子里把赋值语句改写成:s=(3+5+7)/2;运行时发现程序的结果不对,为什么?北京交通大学计算机与信息技术学院教师:林友芳6.变量初始化定义变量时指定变量的初始值。可用数值或者数值表达式为的变量做初始化,如doubles=(3+5+7)/2.0;longdoublex=4.5L,y=3.24L;初始化只能一次对一个变量做北京交通大学计算机与信息技术学院教师:林友芳7.从键盘输入数据到变量请查阅并预习scanf语句的功能与用法例#include“stdio.h”main(){intn;scanf(“%d”,&n);printf(“输入的值为:%d”,n);return0;}%d表示输入整数,请先自学%c,%s,%lf,%f的含义&n表示录入的数转换成整数后放入n中北京交通大学计算机与信息技术学院教师:林友芳8.赋值符与等于赋值与数学中的“等于”完全不同。例x=x+1;“x=x+1”在数学里为矛盾。C语言中判断两个值是否相等,用运算符==一定注意不要写成一个等号北京交通大学计算机与信息技术学院教师:林友芳9.值的计算顺序问题下面是合法语句x=2.0;y=(x=3.0)+x;问题:执行后y的值是什么?这个问题没有明确答案,因为第二个语句没有语法错误,但是定义不明确。原因C语言未规定加法对两个运算对象的求值顺序,这种表达式的结果没有定义。北京交通大学计算机与信息技术学院教师:林友芳dValue35.7变量double类型名字变量的存储单元地址:0x00002f3010.变量的属性图示规定存储的长度和格式doubledValue=35.7;三、指针变量简介从信件投递、找人、找地方到找存储空间,保存存储空间地址的方法指针变量简介北京交通大学计算机与信息技术学院教师:林友芳1.找到目的地的办法某宿舍宿舍号某办公室通信地址同学或快递根据宿舍号找到宿舍快递或邮局根据通信地址投递北京交大我校地址根据地址找到学校网站地址网站通知书上网站上脑子里信封上信封上或脑子里搜索结果上脑子里手册上目的地地址地址保存处根据地址找到网站北京交通大学计算机与信息技术学院教师:林友芳2.回忆数据与存储空间…0100000100000000000000000000000000000000…存储空间:以字节为单位编号普通字符型变量占8位‘A’一个32位int占用的存储空间一个float型浮点数所需占用的存储空间0x000000000xFFFFFFFF存储空间的编号称为地址0x000000010x00000002北京交通大学计算机与信息技术学院教师:林友芳3.存储空间地址之用处与获取存储空间地址用处知道了地址就可能可以访问存储空间:往其中存数据;使用其中保存的数据存储空间地址获取途径用&运算符取已知变量所占用的存储空间地址使用存储空间申请功能向操作系统成功申请存储空间后,相应功能会返回得到的存储空间地址。(此部分内容见后续部分讲解)直接使用一些地址常量,如数组的起始地址北京交通大学计算机与信息技术学院教师:林友芳4.&运算符说明示例intn=10;则&n代表整型变量n所占用的存储空间的起始地址。如图所示,设n占用了0x0012FF70-0x0012FF73这4个字节的存储空间则&n的值为0x0012FF70100x0012FF70n内存空间北京交通大学计算机与信息技术学院教师:林友芳5.存储空间地址与保存计算机中的内外存的存储空间非常大,可以保存大量的不同类别、不用形式的数据。要对这些数据进行管理、使用和处理,必须记录下这些数据所处的存储位置—地址,否则无法找到这些数据。在许多高级语言中,提供一类用来记录存储空间地址的变量,这种变量一般被称为指针变量。注意,因为通过对保存在指针变量中的地址来直接操作存储空间需要程序员的细心和经验,否则,一些地址值算错就容易使程序出错。因此,也有一些高级语言如JAVA不再设置指针变量,而通过其它机制实现动态存储

1 / 69
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功