《常量与变量PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《常量与变量PPT讲稿.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、常量与常量与变量量第1页,共34页,编辑于2022年,星期六示例代码示例代码3-101#include 0203 int main(void)04/*使用使用printf函数输出各种常量的值函数输出各种常量的值*/05printf(234=%dn,234);/*输出输出234的值的值*/06printf(-93=%lldn,-93LL);/*输出输出-93LL的值的值*/07printf(037=%dn,037);/*输出输出037的值的值*/08printf(037=%cn,037);/*输出输出037的值的值*/09printf(32e3=%lfn,32e3);/*输出输出32e3的值的值
2、*/10printf(73.43=%lfn,73.43);/*输出输出73.43的值的值*/11printf(e=%cn,e);/*输出输出e的值的值*/1213return 0;14 第2页,共34页,编辑于2022年,星期六示例代码示例代码3-1【运行结果运行结果】运行程序后,输出结果如下图所示。运行程序后,输出结果如下图所示。第3页,共34页,编辑于2022年,星期六3.1.2 3.1.2 变量变量变量,顾名思义,与常量是相对的,就是指可以改变的量。变量,顾名思义,与常量是相对的,就是指可以改变的量。简单地看,变量由两部分组成:变量名和变量值。变量名简单地看,变量由两部分组成:变量名和变
3、量值。变量名是一个标识符;变量值为是一个数据值。在是一个标识符;变量值为是一个数据值。在C语言中,便语言中,便可以使用变量名来表示变量值。所谓可以使用变量名来表示变量值。所谓“变量就是指可以改变量就是指可以改变的量变的量”就是指其变量值是可以改变的。就是指其变量值是可以改变的。【范例范例3-2】演示变量的访问和修改,实现方法如示例代码演示变量的访问和修改,实现方法如示例代码3-2所示。所示。第4页,共34页,编辑于2022年,星期六示例代码示例代码3-201#include 0203int main(void)04int data=24;/*定义变量定义变量data*/0506printf(d
4、ata=%dn,data+1);/*访问变量访问变量data*/07data=26;/*修改变量值修改变量值*/08printf(data=%dn,data);/*访问变量访问变量data*/0910return 0;11第5页,共34页,编辑于2022年,星期六 【运行结果运行结果】程序输出结果如下图所示。程序输出结果如下图所示。示例代码示例代码3-2第6页,共34页,编辑于2022年,星期六3.2 3.2 变量的使用变量的使用相对常量单一的使用方法而言,变量的使用必须依照一定的相对常量单一的使用方法而言,变量的使用必须依照一定的规则进行。要使用一个变量,首先要声明和定义这个变量,规则进行。
5、要使用一个变量,首先要声明和定义这个变量,然后才能使用它来表示数据。此外,还可以对变量进行多然后才能使用它来表示数据。此外,还可以对变量进行多次赋值;其中,第一次赋值行为被称为对变量的初始化。次赋值;其中,第一次赋值行为被称为对变量的初始化。本小节将依次讨论这些问题,并在最后介绍与本小节将依次讨论这些问题,并在最后介绍与变量紧密相变量紧密相关的地址操作符和指针操作符的使用。关的地址操作符和指针操作符的使用。第7页,共34页,编辑于2022年,星期六3.2.1 3.2.1 声明变量声明变量声明一个变量,实际上是以特定的格式声明一个标识符,其声明一个变量,实际上是以特定的格式声明一个标识符,其作用
6、是告诉编译器与标识符相关联的一些属性。变量声明作用是告诉编译器与标识符相关联的一些属性。变量声明包括数据类型名和变量名两部分,其形式如下:包括数据类型名和变量名两部分,其形式如下:数据类型名数据类型名 变量名变量名【范例范例3-3】使用未声明的标识符,如示例代码使用未声明的标识符,如示例代码3-3所示。所示。第8页,共34页,编辑于2022年,星期六示例代码示例代码3-301#include 0203int main(void)04printf(data=%dn,data);/*输出输出data的值的值*/0506return 0;07【运行结果运行结果】编译器在编译时会报错,信息如下:编译器
7、在编译时会报错,信息如下:.3-3.c(4):error C2065:data:undeclared identifier第9页,共34页,编辑于2022年,星期六3.2.2 3.2.2 定义变量定义变量变量定义的主要作用,是定义语句中的标识符代表的变量分变量定义的主要作用,是定义语句中的标识符代表的变量分配一块内存。其形式与变量声明基本一致,如下所示:配一块内存。其形式与变量声明基本一致,如下所示:数据类型名数据类型名 变量名变量名;在使用变量前,必须有定义语句为变量分配内存。一般情况在使用变量前,必须有定义语句为变量分配内存。一般情况下,只要将变量定义语句放在使用语句之前即可。首先,下,只
8、要将变量定义语句放在使用语句之前即可。首先,由于变量的定义完成了声明作为变量的标识符的功能,因由于变量的定义完成了声明作为变量的标识符的功能,因此在变量定义语句之后便可使用该变量名;其次,变量的此在变量定义语句之后便可使用该变量名;其次,变量的定义还为该变量分配了空间,因此在变量定义语句之后使定义还为该变量分配了空间,因此在变量定义语句之后使用该变量才能访问到对应的内存空间。用该变量才能访问到对应的内存空间。第10页,共34页,编辑于2022年,星期六3.2.3 3.2.3 使用使用externextern声明变量声明变量从上一小节的讨论知道,变量使用之前必须要先定义变量。从上一小节的讨论知道
9、,变量使用之前必须要先定义变量。一般情况下,都会在变量定义语句之后才使用变量;若一一般情况下,都会在变量定义语句之后才使用变量;若一定要在变量定义语句之前使用变量,也必须借助关键字定要在变量定义语句之前使用变量,也必须借助关键字extern来声明变量。使用来声明变量。使用extern声明变量的形式如下:声明变量的形式如下:extern 数据类型名数据类型名 变量名;变量名;【范例范例3-4】使用使用extern语句声明变量,如示例代码语句声明变量,如示例代码3-4所示。所示。第11页,共34页,编辑于2022年,星期六示例代码示例代码3-401#include 0203int main(voi
10、d)04extern int data;/*声明一个变量声明一个变量data*/05printf(data=%dn,data);/*输出输出data的值的值*/0607return 0;080910int data=23;/*定义变量定义变量data*/第12页,共34页,编辑于2022年,星期六示例代码示例代码3-4【运行结果运行结果】程序运行后,得到结果如下图所示。程序运行后,得到结果如下图所示。第13页,共34页,编辑于2022年,星期六3.2.4 3.2.4 赋值和初始化赋值和初始化赋值是指为变量设定一个数值的过程。在变量的使用过程中,对函数赋值赋值是指为变量设定一个数值的过程。在变量
11、的使用过程中,对函数赋值是十分频繁的操作。对变量赋值最主要的方式是使用赋值表达式,形是十分频繁的操作。对变量赋值最主要的方式是使用赋值表达式,形式如下:式如下:变量名变量名=值值;例如:例如:01int a;02double b;03char c;0405a=2;/*给给a赋值赋值*/06b=3.2;/*给给b赋值赋值*/07c=c;/*给给c赋值赋值*/第14页,共34页,编辑于2022年,星期六3.2.4 3.2.4 赋值和初始化赋值和初始化大部分的变量需要程序员在程序中以赋值的形式为其显式初始化。形式如下:大部分的变量需要程序员在程序中以赋值的形式为其显式初始化。形式如下:数据类型名数据
12、类型名 变量名变量名=初始值初始值;其中,初始值可以由程序员设定。使用初始化的方法,以上其中,初始值可以由程序员设定。使用初始化的方法,以上3个变量的赋值可以改写为:个变量的赋值可以改写为:01int a=2;02double b=3.2;03char c=c;第15页,共34页,编辑于2022年,星期六3.2.4 3.2.4 赋值和初始化赋值和初始化可以在一个语句中定义多个同类型的变量,形式如下:可以在一个语句中定义多个同类型的变量,形式如下:数据类型名数据类型名 变量变量1,变量变量2,变量变量3;例如,要定义例如,要定义3个个int型变量可以写为:型变量可以写为:int a,b,c;但若
13、要在一个语句中初始化多个变量,仍需挨个为其赋值。但若要在一个语句中初始化多个变量,仍需挨个为其赋值。例如:例如:int a=2,b=2,c=2;若只在末尾赋值,如下所示:若只在末尾赋值,如下所示:int a,b,c=2;【范例范例3-5】展示了初始化的变量和未初始化的变量,如示展示了初始化的变量和未初始化的变量,如示例代码例代码3-5所示。所示。第16页,共34页,编辑于2022年,星期六 示例代码示例代码3-501#include 0203int main(void)04int x;/*定义定义x但不对齐初始化但不对齐初始化*/05int y=2;/*定义并初始化定义并初始化y*/0607i
14、nt a,b,c=3;/*定义定义3个变量,只初始化个变量,只初始化c*/08int i=3,j=3,k=3;/*定义定义3个变量,并全部初始化个变量,并全部初始化*/0910printf(x=%-8d y=%-8dn,x,y);/*输出输出x和和y的值的值*/11printf(a=%-8d b=%-8d c=%-8dn,a,b,c);/*输出输出a、b和和c的值的值*/12printf(i=%-8d j=%-8d k=%-8dn,i,j,k);/*输出输出i、j和和k的值的值*/1314return 0;15 示例代码示例代码3-5第17页,共34页,编辑于2022年,星期六示例代码示例代码
15、3-5【运行结果运行结果】本程序编译后有如下警告信息:本程序编译后有如下警告信息:.3-5.c(10):warning C4700:uninitialized local variable x used.3-5.c(11):warning C4700:uninitialized local variable b used.3-5.c(11):warning C4700:uninitialized local variable a used第18页,共34页,编辑于2022年,星期六示例代码示例代码3-5产生警告的原因是,变量产生警告的原因是,变量a、b和和c未初始化,由于这是程序有意而为的,故
16、忽略未初始化,由于这是程序有意而为的,故忽略之。在之。在Visual Studio 2005环境下的运行程序,可得结果如下图所示。在环境下的运行程序,可得结果如下图所示。在Visual C 6.0环境下的运行程序,结果如下图所示。环境下的运行程序,结果如下图所示。第19页,共34页,编辑于2022年,星期六3.2.5 3.2.5 地址操作符和指针操作符地址操作符和指针操作符变量被定义后,都会占用一块内存,而内存都是有地址的。变量被定义后,都会占用一块内存,而内存都是有地址的。由于一个变量可用以表示其内存空间,因此变量内存地址由于一个变量可用以表示其内存空间,因此变量内存地址也可以直接称为变量的
17、地址。也可以直接称为变量的地址。C语言提供了地址操作符语言提供了地址操作符(&)来获取变量(内存)的地址,同时还提供了指针操)来获取变量(内存)的地址,同时还提供了指针操作符(作符(*)来获取某地址上的内存内容。)来获取某地址上的内存内容。第20页,共34页,编辑于2022年,星期六1 1地址操作符(地址操作符(&)要获取一个变量的地址,在该变量名前加要获取一个变量的地址,在该变量名前加&即可,例如下图即可,例如下图中的变量中的变量data为例,其地址为为例,其地址为0016。要获取其地址值,。要获取其地址值,可以使用可以使用“&data”,它的结果即为,它的结果即为0016。此外,地址操。此
18、外,地址操作符只能使用变量作为操作数,不能将其用在常量前面,作符只能使用变量作为操作数,不能将其用在常量前面,比如:比如:&14&c这种用法是错误的。这种用法是错误的。第21页,共34页,编辑于2022年,星期六2 2指针操作符(指针操作符(*)要取得一个地址中的内容,可以使用指针操作符要取得一个地址中的内容,可以使用指针操作符*。指针操。指针操作符的操作对象必须为地址,例如:作符的操作对象必须为地址,例如:*(&data)其中,其中,&data是是data的地址,在前加指针操作符即可获得该的地址,在前加指针操作符即可获得该地址上的存储内容。指针操作符的使用的对象只能为变量地址上的存储内容。指
19、针操作符的使用的对象只能为变量地址。如下的用法是错误的地址。如下的用法是错误的:01int p=2;02int q=&p;/*正确,正确,q为为p的地址,但会有警告的地址,但会有警告*/03int z=*q;/*错误,这里的错误,这里的q被认为是被认为是int型,不是变量型,不是变量地址地址*/【范例【范例3-6】展示如何使用地址操作符和指针操作符,】展示如何使用地址操作符和指针操作符,如示例代码如示例代码3-6所示。所示。第22页,共34页,编辑于2022年,星期六示例代码示例代码3-601#include 0203 int main(void)04int key=0;/*定义变量定义变量k
20、ey*/0506printf(Please input a integer:);07scanf(%d,&key);/*为为key赋值赋值*/08printf(keyt=%dn,key);/*输出输出key的值的值*/0910printf(&keyt=%pn,&key);/*输出输出key的地址的地址*/11printf(*(&key)t=%dn,*(&key);/*再次输出再次输出key的值的值*/12 return 0;13第23页,共34页,编辑于2022年,星期六图图3-7 地址操作符和指针操作符地址操作符和指针操作符【运行结果运行结果】程序运行后,得到结果下图所示。程序运行后,得到结果
21、下图所示。第24页,共34页,编辑于2022年,星期六3.3.1 printf3.3.1 printf函数函数printf函数属于函数属于C标准库函数,要使用这两个函数必须包含头标准库函数,要使用这两个函数必须包含头文件文件“stdio.h”。printf函数的功能是向标准输出打印特函数的功能是向标准输出打印特定的内容。调用的标准形式如下:定的内容。调用的标准形式如下:printf(参数参数1,参数参数2,参数参数3,参数参数4,);参数参数1为一串包含在一对引号内的字符,即字符串;参数为一串包含在一对引号内的字符,即字符串;参数2、参数参数3及其后的所有参数为要输出的数值。为方便表述,及其后
22、的所有参数为要输出的数值。为方便表述,将其形式改写为:将其形式改写为:printf(字符串字符串,参数列表参数列表);范例范例3-7展示了展示了printf函数对字符串和变量的处理方式。函数对字符串和变量的处理方式。【范例范例3-7】展示展示printf函数的使用,如示例代码函数的使用,如示例代码3-7所示。所示。第25页,共34页,编辑于2022年,星期六示例代码示例代码3-701#include 0203 int main(void)04int intValue1=1;/*定义第定义第1个个int型变量型变量*/05int intValue2=2;/*定义第定义第2个个int型变量型变量*
23、/06char charValue=s;/*定义一个定义一个char型变量型变量*/0708printf(intValue1=%dn,intValue1);/*输出第输出第1个变量个变量*/09printf(intValue2=%ddn,intValue2);/*输出第输出第2个变量个变量*/10printf(charValue=%cn,charValue);/*输出第输出第3个变量个变量*/11return 0;12第26页,共34页,编辑于2022年,星期六示例代码示例代码3-7【运行结果运行结果】程序运行后,得到结果如下图所示。程序运行后,得到结果如下图所示。第27页,共34页,编辑于2
24、022年,星期六3.3.2 scanf3.3.2 scanf函数函数scanf函数也属于函数也属于C标准库函数,使用时也必须包含头文件标准库函数,使用时也必须包含头文件“stdio.h”。scanf函数和函数和printf函数的调用形式和处理函数的调用形式和处理数据的方式都十分相似。标准的调用形式如下:数据的方式都十分相似。标准的调用形式如下:scanf(参数参数1,参数参数2,参数参数3,参数参数4,);参数参数1为按照特定格式书写的字符串;其后带一个参数列表,为按照特定格式书写的字符串;其后带一个参数列表,参数参数2、参数、参数3及其后的所有参数都为用来存储读取的数值及其后的所有参数都为用
25、来存储读取的数值的空间地址。类似的,这个函数的调用形式也可以改写为:的空间地址。类似的,这个函数的调用形式也可以改写为:scanf(字符串字符串,参数列表参数列表);【范例范例3-8】展示展示printf函数和函数和scanf函数的使用,如示例代函数的使用,如示例代码码3-8所示。所示。第28页,共34页,编辑于2022年,星期六示例代码示例代码3-801#include 02int main(void)03/*定义两个变量定义两个变量*/04int u=0;05int v=0;06printf(Th%cs is%c te%cting program%c!n,/*为分行为分行号号*/07i,a
26、,s,!);/*使用使用printf函数输出一个字串函数输出一个字串*/08scanf(ooo%dooo%dooo,&u,&v);/*使用使用scanf函函数为数为u和和v赋值赋值*/09 printf(u=%d,v=%d.n,u,v);/*使用使用printf函数输出函数输出u和和v的值的值*/10 return 0;11第29页,共34页,编辑于2022年,星期六示例代码示例代码3-8【运行结果运行结果】程序运行后,在得到如下图第程序运行后,在得到如下图第1行所示内容的行所示内容的结果后,输入如该下图第结果后,输入如该下图第2行所示的字符串,最后可以得行所示的字符串,最后可以得到结果如图中
27、第到结果如图中第3行所示。行所示。第30页,共34页,编辑于2022年,星期六3.4 3.4 数据类型数据类型C语言中的数据是以数据类型的形式来组织的,所有的常量语言中的数据是以数据类型的形式来组织的,所有的常量和变量都属于某种数据类型。和变量都属于某种数据类型。C语言中定义了一系列的关语言中定义了一系列的关键字来组成数据类型名,下面的这些是键字来组成数据类型名,下面的这些是C语言中的常用数语言中的常用数据类型:据类型:signed|unsigned short int,signed|unsigned short int,signed|unsigned int,signed|unsigned
28、int,signed|unsigned long int,signed|unsigned long int,signed|unsigned long long int,signed|unsigned long long int,第31页,共34页,编辑于2022年,星期六3.4 3.4 数据类型数据类型char,char,float,float,double,double,long double,long double,void,void,数据类型名数据类型名 ,数据类型名数据类型名*,struct struct_name,struct struct_name,enum enum_name,e
29、num enum_name,union union_nameunion union_name第32页,共34页,编辑于2022年,星期六3.5 3.5 综合练习综合练习1、要求使用、要求使用printf函数输出如下字样:函数输出如下字样:Copyright 2007-2008 ALU corporation.【提示提示】可以将上述字符串依样输出,也可以将其中的数字可以将上述字符串依样输出,也可以将其中的数字作为整数输出。实现方法如示例代码作为整数输出。实现方法如示例代码3-9所示。所示。第33页,共34页,编辑于2022年,星期六3.5 3.5 综合练习综合练习2、定义、定义2个整型变量,分别使用个整型变量,分别使用scanf为它们赋值,并使用为它们赋值,并使用printf函数输出。函数输出。【提示提示】整型在整型在scanf和和printf函数中对应的格式为函数中对应的格式为%d。实。实现方法如示例代码现方法如示例代码3-10所示。所示。第34页,共34页,编辑于2022年,星期六
限制150内