第3章 C语言的变量

合集下载

C语言第3章数据类型、运算符与表达式ppt课件

C语言第3章数据类型、运算符与表达式ppt课件
第三章
数据类型、运算符与表达式
1
主要内容
一、C的数据类型 二、常量与变量 三、基本数据类型 四、运算符与表达式
2
一、C的数据类型
(一) 什么是数据类型? (二) C语言的数据类型有哪些?
3
(一) 什么是数据类型?
对数据的描述
对操作的描述
数据结构+算法=程序
C语言中以 “数据类型”形式存在
4
所谓数据类型是按被定义变量的性质,表示形 式,占据存储空间的多少,构造特点来划分的。
int NUM=20; sum=PRICE*NUM;
11
符号常量优点
1、含义清楚。 2、在需要改变一个常量时,能够做到“一
改全改”
12
(二)变量
概念
变量代表内存中具有特定属性的一 个存储单元,它用来存放数据,也 就是变量的值。
13
(1)变量名。每个变量都有一个名字 ──变量名,代表一个地址。 (2)变量值。在程序运行过程中,变 量值存储在内存中。在程序中,通过 变量名来引用变量的值。
#include <stdio.h>
void main() {
int student,age; int if=adrress=1; float score=90;
stadent=2; Age=20; printf("%d %d %d %f",if,student,age,score); }
本程序中有 几处错误?
(5)标识符的有效长度随系统而异,如果超 长,则超长部分被舍弃。VC++6.0中规 定最大长度为247个字符。
23
请选出下列正确的标识符 M.D.John , 12%gf ,1add ,_ce36 ,age& 5thclass, lotus-1-2-3 , cd*ef , float,

C语言第3章 数据描述与基本操作

C语言第3章 数据描述与基本操作

C语言使用的基本表达式有: 语言使用的基本表达式有: 语言使用的基本表达式有 ⑴赋值表达式,如:a=3 赋值表达式, ⑵算数表达式,如:3+4*2 算数表达式, ⑶关系表达式,如:3>2 关系表达式, ⑷逻辑表达式,如:3>5&&a>=b 逻辑表达式, ⑸条件表达式,如:a>b?a:b 条件表达式, ⑹逗号表达式,如:a=3,b=4,c=5 逗号表达式,
● 赋值运算符的结合性是自右向左
(3) 赋值运算符的使用 设变量定义如下: char c1=‘a’,c2; int n1=65,n2,n3,n4,n5,n6; float f1=3.0,f2; 则: ① c2=n1运算后,c2的值是65,n1的值不变。 n2 !c1 n2 0 c1 ② n2=!c1运算后,n2的值是0,c1的值不变。 ③ f2=f1+0.001运算后,f2的值是3.001,f1的值不变。 ④ n3=c1==n1||c1!=n1运算后,n3的值是1,c1和n1 的值不变。 注:运算顺序相当于 n3=((c1==n1)||(c1!=n1)) ⑤ n4=n5=n6=-(――n1)运算后,n4,n5,n6的值 均是-64,n1的值是64。 注意:上述表达式的值就等于赋值表达式中的最左边的变量值。 注意
三.赋值运算符 赋值运算符
1.赋值运算符
赋值运算符是双目运算符,赋值运算符的左边必须是变量, 右边是表达式。 (1) 赋值运算符的运算对象及有关规则如下表:
对象数 名称 运算符 运算规则 运算结果 结合性 表达式的 自右向左 将表达式的 双目 赋值 =
值赋予变量 类型
(2) 赋值运算符的优先级 ● 算术运算符 优先于 关系运算符 优先于 双目逻为2,
则:① b=a+3,c=b+4 运算结果:a不变,b为5,c为9,表达式的值为9 ② d=a――,e=d――,f=――e 运算结果:a为1,d为1,e为1,f为1,表达式的值为1

C语言课件第三章

C语言课件第三章

三、 自增、自减运算符 ++ --
++、- -运算符的作用是使变量的值加1或减1
1)该运算符为单目运算符,其运算对象只能是 变量,不能为常量或者表达式。 例如: i++ 、x- - 都是正确的 5++ 、(x+y)++ 都是错误的
2)该运算符作前缀、后缀都可以 例如 i++、++i、i- - 、- -i 都是正确的
3)对变量而言 i++ 或者++i都相当于i=i+1 i- -或者- -i都相当于i=i-1
例如: main( ) { int i=3 , j=3; +i+++i; j---j;; printf (“%d, %d\n”, i, j ); }
运行结果:4,2
4)但如果作为表达式,前缀和后缀则不同: 后缀:先取值再运算(i++,先取i值,i再自加) 前缀:先运算再取值(++i,i先自加,再取i值)
2)强制类型转换运算符优先级高于算术运算符
float x=3.6; int y; y=(int)x%3+2;
x = ?3.6 y=?2
计算下列表达式的值 设 x=2.5, a=7,y=4.7
x+a%3 * (int)(7x7+.2y ) % 2 / 4
设 a=2,b=3,x=3.5,y=2.5
(float5).(0a+b )/2+(int3)(x)%(int2)(y)
例如: main() { int i=3; printf(“%d\n”+, +i+i+ ); printf(“%d”, i ); }

c语言第03章

c语言第03章

活期存款一年后本息和为: p1=p0(1+r1) 一年期定期存款,一年后本息和为: p2=p0(1+r2) 两次半年定期存款,一年后本息和为:
r3 r3 p3 = p0(1 + )(1 + ) 2 2
6
3.1顺序程序设计举例

算法:
输入p0,r1,r2,r3的值 计算p1=p0(1+r1) 计算p2=p43; r 3 )
2 2
输出p1,p2,p3
7
3.1 顺序程序设计举例
#include <stdio.h> 定义变量同时赋予初值 int main ( ) {float p0=1000, r1=0.0036,r2=0.0225, r3=0.0198, p1, p2, p3; p1 = p0 * (1 + r1); p2 = p0 * (1 + r2); p3 = p0 * (1 + r3/2) * (1 + r3/2); printf(”%f\n%f\n%f\n”,p1, p2, p3); return 0; }
\„ \ddd \“ 单引号 例 void main() { printf(“Y\b=\n”);\xhh 3位8进制数代表的字符 aaa }
转义字符:反斜线后面跟一个字符或一个代码值表示
<
双引号 运行结果: 2位16进制数代表的字符 屏幕显示:= 15 打印机输出:¥
C语言程序设计
第3章 最简单的C程序设计
19
C语言程序设计
第3章 最简单的C程序设计

3.2.3不同类型数据间的转换
1.隐式转换
什么情况下发生
运算转换------不同类型数据混合运算时 赋值转换------把一个值赋给与其类型不同的变量时 输出转换------输出时转换成指定的输出格式

C语言程序设计--第3章基本数据类型和表达式

C语言程序设计--第3章基本数据类型和表达式

2.实型变量
实型变量分为单精度(float型)和双精度(double型)。 如: float x,y; double z; / *定义x , y为单精度实数* / / *定义z为双精度实数* /
一个float型数据在内存中占4个字节(32位),提供7位有效数字 一个double型数据占8个字节(64位),双精度提供15 ~ 16位有 效数字 值得注意的是,实型常量是double型,当把一个实型常量赋给一 个float型变量时,系统会截取相应的有效位数。
§3.1 基本语法单位
任何一种语言都会根据自身的特点规定 它自己特定的一套基本符号。例如,英语的 基本符号是26个英文字母和一些标点符号。 C语言作为一种程序设计语言,也有它的基 本符号,程序就是由这些基本符号组成的。
§3.1.1 基本符号
程序中要对各种变量和各种函数起名,这些变量名、 函数名都是由语言的基本符号组成的。C的基本符号包 括: (1)数字10个(0~9); (2)英文字母大小写各26个(A~Z, a~z); (3)特殊符号,主要用来表示运算符,它通常是 由1~2个特殊符号组成。包括:
digits是一位或多位十进制数字(从0~9)。 1.575e9表示1.575×109
注意:
◆所有的实型常量均视为双精度类型。实型常量
的整数部分为0时可以省略,如下形式是允许的: .57,.0075e2,-.125,-.175E-2; 须为整数: 如e3,2.1e3.5,. e3,e等都是不合法的指数 形式。
不同的,而且取值范围与机器硬件有关,在 使用时请参阅有关手册。
◆需要指出的是:C语言没有提供布尔(逻辑)
类型,在逻辑运算中,它是以非零表示真 (TRUE),以数值0表示假(FALSE)。

C语言第3章(谭浩强)

C语言第3章(谭浩强)
17





void main( ) { int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%d\n”,c,d); } 运行结果:a+u=22,b+u=-14 结论:不同类型的整型数据可以进行算 术运算。
位数 16
取值范围 -215-(215-1) -32768—+32767 -32768—+32767
Short [int] Long [int]
短整型 长整型
16 32
16 16 32
Unsinged int 无符号整型 Unsinged short [int] Unsinged long [int] 无符号短整 型 无符号长整 型
8


④大写字母与小写字母意义不同, 被认为是两个不同的字符。一般变 量名用小写字母表示。 注意:常量名常用大写、变量名常 用小写!
year Day a_12 _abcdef #123 .com $100 1999Y a=b 1_2_3 +abcedfghi ∏ -5 等
9

3、变量要先定义后使用


可以改为double型) void main( ) {float x;double y; x=123456.789;y=123456.789; printf(“%f, %f”,x,y);} 结果为: 123456.789062, 123456.789000
29
§3.5
字符型数据
一、字符常量 1、在C语言中字符型常量是用单引号括 起来的一个字符。 如:’a‟、’A‟、’3‟、’?‟、’ ’、 ’$‟等。 2、以‚\”开头的转义字符,如\n不代表 字母n,而是代表换行。

c语言第3章 数据类型及表达式

c语言第3章 数据类型及表达式

•除 当除号两边都是整型量时,叫做整除 整除, 当除号两边都是整型量时,叫做整除,运算结果只保 留整数部分。 留整数部分。 当除号任何一边有实型量时,运算结果是实数。 当除号任何一边有实型量时,运算结果是实数。 #include <stdio.h> main() main() { float div; div=1/2; printf( %f %f\ ,div); printf(“%f\n”,div); }
–规则: 规则: 规则
–见名知意 见名知意 –不宜混淆 不宜混淆
请指出下列标识符的正误: 请指出下列标识符的正误: main、count、!count、new、5abc、if、do、L_5、who、a123、 main、count、!count、new、5abc、if、do、L_5、who、a123、 _A、_123、c#、 _A、_123、c#、r-3、printf
h e l l o , w o r l d \0 • 注意: 注意: 字符常量和字符串常量是两个不同的概念 字符常量和字符串常量是两个不同的概念
char ch; ch=‘A ; ch= A’; char ch; ch=“A ;// ;//错误 ch= A”;//错误
A
\0
\0
3.7 字符型数据
3.7.3 字符型变量
3.3 常量
常量 • 定义:程序运行时值不能改变的量,即常数。 定义:程序运行时值不能改变的量,即常数。 • 分类: 分类: 符号常量: 符号常量:用标识符表示具体值 • 定义格式: 定义格式: • 一般用大写字母 直接常量: 直接常量:直接写出具体值 • 整型常量 • 实型常量 • 字符常量 • 字符串常量 常量值 #define 标识符 常量值

C语言第03章--数据类型和表达式

C语言第03章--数据类型和表达式
通常不被初始化的变量,其值为危险的随机数 通常不被初始化的变量,其值为危险的随机数
char int
ch = 'a'; i = 1;
17
变量的属性
例:
int sum=10; 类型
内存存放说明: 内存存放说明: 存放说明 变量名 1001 sum 10 变量值
存储单元的地址
二、 变量
命名规则 在C中变量名 函数名 文件名 数组名 等均称标识符 变量名, 函数名, 文件名, 数组名, 变量名 标识符 (identifier), 可由字母 数字 下划线 字母,数字 下划线组成,且第一个必 字母 数字和下划线 须为字母或下划线 字母或 字母 下划线,前8或32个有效。 注意: 字母大小写敏感; 注意 字母大小写敏感 不可用关键字; 不可用关键字 不可出现空格; 不可出现空格 见名知意; 见名知意 如: a1与A1为不同的变量名 如: int, for, if 等 如: stu 1, a 1等 如: sum, sort 等
e前必须有数 前必须有数 字,e后必须 后必须 有整数
合法:0.123、.123、123.0、123.、0.0 合法: 、 、 、 、 错误: 错误 - 2.0e2.5 e8
(3)字符常量 字符常量 —— 用单引号括起来的一个字符或转义字符 括起来的一个字符或转义字符 一个字符或转义字符. 例: ‘A’, ‘o’ , ‘1’, ‘#’, ‘a’ 等
float
必转
char, short long unsigned int 低
double 高
自动类型转换
34
例:
若:i 为 int , f为float ,d 为 double e 为long
字节数

C语言程序设计第3章 顺序结构编程2018版

C语言程序设计第3章 顺序结构编程2018版
printf("输入红包金额:"); scanf("%d",& money); printf("输入红包个数:"); scanf("%d",& num); printf("计算红包总金额:"); total = num * money; printf("红包总金额:%d元\n", total); return 0; }
类型 变量长度(单位:字节) 数值范围
short int
2
-215 ~ 215-1
4
-23311 ~ 23311-1
long
unsigned short
unsigned int
unsigned long
4
-231 ~ 231-1
2
0 ~ 216-1
4
0 ~ 232-1
4
0 ~ 232-1
➢ 整型常量三种形式
例:total = money*num; int money=10, num=10;
注:int money=num=10;
3.2.3 赋值语句
➢ 复合赋值运算符 a += b 等价于 a = a + b a -= b 等价于 a = a – b a *= b 等价于 a = a * b a /= b 等价于 a = a / b a %= b 等价于 a = a % b
案例二:共享单车费用程序运行结果
案例三:孩子身高预测
问题描述:孩子的身高可以利用遗传因素 即利用父母的身高进行预测。女儿身高计 算公式为:女儿成人时的身高=(父高× 0.96 + 母高)÷2 (注:此方法未考虑环 境因素的影响)。

C语言教程第3章 数据类型、运算符与表达式

C语言教程第3章  数据类型、运算符与表达式
#include <stdio.h> void main( ) { int a,b,c,d; /*指定a、b、c、d为整型变量*/ unsigned u; /*指定u为无符号整型变量*/ a=12;b=-24;u=10; c=a+u;d=b+u; printf("a+u=%d,b+u=%d\n",c,d); } 运行结果为 a+u=22,b+u=-14
注意以下几点:
(4) 一个整常量后面加一个字母u,认为 是unsigned int型,如12345u,在内存 中按unsigned int规定的方式存放(存储 单元中最高位不作为符号位,而用来存 储数据,见图2.4(b)。如果写成-12345u, 则先将-12345转换成其补码53191,然 后按无符号数存储。
int a; unsigned int b;
一个整数(以13为例)在存储单元中 的存储情况
3. 整型变量的定义
int a,b; (指定变量a、b为整型) unsigned short c,d; (指定变量c、d为无符号短整型) long e,f; (指定变量e、f为长整型)
例3.2整型变量的定义与使用。
字符型变量用来存放字符常量,请注 意只能放一个字符,不要以为在一个字符 变量中可以放一个字符串(包括若干字符)。 字符变量的定义形式如下: char c1,c2;
c1='a';c2='b';
3.5.3 字符数据在内存中的存储 形式及其使用方法
字符的相应的ASCII代码放到存储单元中
例3.6向字符变量赋予整数。
单精度 ( float 型 占4B) 双精度 ( double 型 占8B )

C语言第3章数据类型、运算符、表达式

C语言第3章数据类型、运算符、表达式

例如
➢字符常量‘a’占一个字节 ➢字符串常量"a" 占2个字节
‘a’ → “a” →
0110 0001 ……
0110 0001 0000 0000
(97)10
(97)10 (0)10
7.变量赋初值
变量赋初值
C语言允许定义变量时赋予初值。
➢int i = 6;
也可对某个变量赋初值:
➢int a, b, c = 6;
如: 0x16, 0x28
4.整型数据
整型变量
分类:
➢基本型 用“ int ”定义; ➢短整型 用“ short int ”或 “ short ”定义; ➢长整型 用“ long ”或 “ long int ”定义; ➢无符号型 用“ unsigned ”定义,不存放符号;
整型变量定义方式
➢基本整型:int a, b, c; ➢短整型 : short int 或 short a, b, c; ➢长整型: long int 或 long a, b, c; ➢无符号型:unsigned a, b; unsigned short a, b
10+‘a’+1.5–8765.1234 ‘b’
8.各种数值型数据间的混合运算
转换方法(自动转换)
double float

long
unsigned
低 int char, short
图中“ ” 表示必定转换。如'a' +' b',先转换为int,结果为 int。
既使是同一种类型也按" "转换。
对于“++”和“--”的使用要避免二义性
10.赋值运算符和赋值表达式

C语言课件 第3章 数据类型

C语言课件 第3章 数据类型
基本数据类型:整型, 型,字符型
主要掌握各种类型的常量表示,变量的定义, 所占存储空间的大小,取值范围
一,整型: 整型: 整型 用于表示整数 所占内存空间:随机器而异,一般微机 上一个整型数据占 2B 的内存空间. 整型的可用修饰符: short [int] long [int] unsigned int / unsigned short /unsigned long
3.1 C的基本语法单位 的基本语法单位
1,字符集 character set 2,关键字 keyword 3,标识符 identifier 标识符命名规则: 标识符命名规则: (1)由字母,数字及下划线组成,且不能以字母开头. (2)不能与关键字同名 (3)尽量"见名知义" 例如:下列标识符,是否合法?为什么? area if score student_no 2day month_3 int _sum no*3 &aa
整型变量的定义(或说明): 如: int a, c, no; long s; unsigned x, y; 等 整型常量: decimal: 12 -3 0 octal : 024 056 hexadecimal: 0x3A -0X34 long int : 12L 0L 问题:要定义两个变量x 问题:要定义两个变量x 和y,分别用于存放数据 1024 和 65536,如何确定x和y类型? 65536,如何确定x
由例题分析可知: 由例题分析可知: 常量: 常量:在程序的运行过程中其值不能被改变 的量.如程序中的3 的量.如程序中的3, 4 符号常量: 符号常量:用一个标识符代表一个有特定含 义的常量. 义的常量.如 PI 变量: 变量:在程序的运行过程中其值可以被改变 的量. 的量.如 r , v 提示:变量必须先定义, 提示:变量必须先定义,后使用

21天学会c语言第3章

21天学会c语言第3章
第三章 存储信息:变量和常量

本章要点

声明和初始化变量 C语言中的两种数值常量
1

主要内容
3.0 引言 3.1 计算机内存 3.2 使用变量存储信息 3.3 数值变量的类型 3.4 常量 3.5 总结

2
3.0 引言
计算机程序通常使用不同类型的数据,如数字、字 符 数据类型不同,存储方式不同 存储数值的方式:变量和常量 变量:代表数据存储位置,其值在程序执行期间可 能发生变化 常量:其值固定,不能修改
26
3.4.2 符号常量
例:计算圆周长和圆面积时,需要用到圆周率π 的值, 例如当半径已知时,可以用下面的代码计算: 代码1:circumference = 3.14*(2*radius); area = 3.14 * (radius)* (radius); 如果定义了一个名为PI,值为3.14的符号常量,那么 代码改为: 代码2:circumference = PI*(2*radius); area = PI * (radius)* (radius); PI 比数字3.14的含义更加清楚。 如果将3.14改为3.1415926,那么代码2只需在定义该 27 常量的地方修改一次,能够做到一改全改
变量名最多有31个字符在选择变量名和其它标识符时应注意做到见名知意即选有含意的英文单词或其缩写作标识符例如interestrateinterestrate321应该不应该使用描述性的变量名尽量不使用下划线做首字符坚持使用一种命名变量的规则变量尽量不全部用大写字母1133数据类型数据类型指针类型指针类型空类型空类型无值类型无值类型voidvoid基本类型基本类型整型整型intint字符型字符型charchar实型浮点型实型浮点型单精度实型单精度实型floatfloat双精度实型双精度实型doubledouble构造类型构造类型数组类型数组类型枚举类型枚举类型enumenum结构类型结构类型structstruct共用体类型共用体类型unionunionc语言变量的类型

C语言第03章

C语言第03章
表示形式 〔1〕十进制小数形式。例如3.14、9.8。 〔2〕指数形式:
<尾数>E〔e〕<整型指数>。例如3.0E+5等。
日常表示法 3.14159*100 0.314159*101 0.0314159*102 31.4159*10-1
C语言表示法 3.14159e0 0.314159e+1 0.0314159e+2 31.4159e-1
注意: (1)C语言对英文字母的大小敏感,即同一字母的大 小写,被认为是两个不同的字符。
习惯上,变量名和函数名中的英文字母用小写,常量用 大写字母增加可读性。
练习题: 1.下面为合法的标识符有: _12s 12s s_12 s@12 define 2.经过下面的操作,sum的值为_____ sum=7, SUM=10 , SUM=7+12, Sum=SUM+23
(2)标识符命名的良好习惯──见名知意: 所谓“见名知意〞是指,通过变量名就知道变量值的含 义。例如,name/xm〔姓名〕、sex/xb〔性别〕、age/nl 〔年龄〕。
4.变量的定义与初始化 在C语言中,要求对所有用到的变量,必须先定义、后使 用;且称在定义变量的同时进展赋初值的操作为变量初始化。 〔1〕变量定义的一般格式
随意值。 0 1 1 0 0 0 0 1 1 0 0 0 00 0 0 i=10; 将10转换为二进制的补码形式存放
0 0 0 0 0 0 0 0 0 0 0 0 1 0 10
思考一下 i=-10,计算机内是如何存储的;
2. 分类:根据占用内存字节数的不同,整型变量又 分为4类:
〔1〕根本整型〔类型关键字为int〕。2字节 〔2〕短整型〔类型关键字为short [int]〕。2字节 〔3〕长整型〔类型关键字为long [int]〕。4字节 〔4〕无符号整型。(最高位不是符号位,而是数值)

c语言 第3章 数据类型及其运算

c语言 第3章 数据类型及其运算

– unsigned int型常量 123u、 123U
• 整型常量的类型
根据其值所在范围确定其数据类型
在整型常量后加字母l或L,认为它是long int 型常量
例:12与12L
2015/12/23 25
整型常量的表示形式
• 十进制形式 :[±]若干个0~9的数字
如:100,-50, 0
• 八进制形式: [±]以0开头的若干个0~7数字
• 无符号长整型
unsigned long [int] ;
2015/12/23
20
二进制存放与溢出
(1)10= (0000 0000 0000 0001)2补码
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
(-1)10= (1111 1111 1111 1111)2补码
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
00000000 00000000 00000001 01010100 5 例 :01736L 为long int 型 2 4
00000000 00000000 00000011 11011110
1
2015/12/23
7
3
6
27
何谓类型溢出(Overflow)?
• C语言提供的任何类型都有取值范围。当向其赋超 过此范围的数值,就会产生数值溢出,得到一个不 正确的结果。 • 例如:short int的范围是-32768~32767 – 如果超出取值范围,给它一个小于-32768或者 大于32767的数会如何呢?
(65535)10=(1111 1111 1111 1111)2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

c语言中全部变量的使用

c语言中全部变量的使用

c语言中全部变量的使用
在C语言中,全局变量是在函数外部声明的变量,它可以被程序中的所有函数访问。

全局变量在程序启动时被创建,在程序结束时销毁。

全局变量的作用域是整个程序,它们可以在任何函数中使用。

全局变量在默认情况下会被初始化为0,但也可以手动初始化为其他值。

另外,在C语言中,全局变量的定义通常放在所有函数外部,这样它们就可以被程序中的所有函数访问。

全局变量可以在任何函数中使用,但需要注意的是,如果在函数中对全局变量进行修改,那么这个修改会影响到程序中其他地方对这个全局变量的访问。

此外,C语言中也可以使用static关键字来修饰全局变量,使得全局变量的作用域仅限于定义它的文件。

这样可以避免全局变量被其他文件中的函数意外修改,提高了程序的安全性。

总的来说,在C语言中全局变量的使用需要注意作用域、初始化和对全局变量的修改对程序的影响,合理地使用全局变量可以方便数据共享和提高程序的可维护性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11
3.3.2 自动型变量


自动型变量是C语言程序中使用最广泛的一种变量,一般存储在栈 区。自动型变量是用关键字“auto”来声明,定义的一般格式为: auto 数据类型 变量名 特点: (1)自动型变量只有在使用它,即定义该变量的函数被调用时 才给它分配存储单元 。 (2)自动变量的作用域是局部作用域。 (3)由于自动变量的作用域和生存期都局限于定义它的个体内 (函数或复合语句内), 因此不同的个体中允许使用同名的变量而 不会混淆。
【例3-4】该例通过实现求两个整数之和,说明变量的屏蔽。
9
3.3 变量的存储与变量的作用域

3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6
变量的存储 自动型变量 静态变量 外部变量 寄存器变量 变量存储类型小结
10
3.3.1 变量的存储


变量的存储类型包括“静态存储”和“动态存储”。 静态存储 是指在程序运行期间分配固定的内存空间,直至整个程序结束。 例如前面介绍的全局变量就是这种存储类型。 动态存储 是在程序运行期间根据需要动态的分配存储空间,使用它时才分 配存储单元,使用完毕立即释放。例如函数的形式参数,在函数 定义时并不给形参分配存储单元,只是在函数被调用时,才予以 分配,函数调用完毕立即释放。如果一个函数被多次调用,则反 复地分配、释放形参变量的存储单元。
19


全局生存期 指变量在程序运行一开始就被建立,而在程序运行结束后才从内 存中删除。具有全程生存期的变量是全局变量和静态变量,具有 全局生存期的变量存储在程序的静态数据存储区中。 动态生存期 变量在程序运行过程中,因需要使用才建立,而使用结束就被删 除。具有动态生存期的变量有局部自动变量和寄存器变量,具有 动态生存期的变量存储在程序的动态数据区中。 【例3-1】使用for循环连续打印变量值,以说明全程生存期和动 态生存期的区别。
【例3-2】该例详细说明局部变量的用法 。
7
3.2.2 全局变量

全局变量是在函数之外定义的变量(所有函数前、各个函数之间、 所有函数后)。全局变量的作用域为从定义全局变量的位置起到
本源程序结束为止。
【例3-3】通过改写代码【例3-2】来说明全局变量的用法。
8
3.2.3 变量的屏蔽效果

在C语言中,如果在同一个源文件中,外部变量与局部变量同名, 则在局部变量的作用范围内,外部变量被“屏蔽”,即它不起作 用,这种情况称为变量的“屏蔽”。
17
3.4 变量使用实例

【例3-7】计算1~7的平方值及平方和。该实例打印出1到7的平 方值,最后打印出1到7的平方值的和,其中全局变量sum出现在 多个函数中。
18
3.5 小结

本章介绍了在函数以及程序设计中,变量的生存期、作用域和存 储类型。作用域是指变量的可见范围,分为局部作用域、全局作 用域和文件作用域。生存期是指变量存在的时间,包括全局生存 期和动态生存期。存储类型包括自动(auto)、静态(static)、 外部(extern)和寄存器(register)4种,这4种变量都有各自的 作用域和生存期。
13
3.3.4 外部变量

在前面讲全局变量时已经提到,如果需要扩展外部变量的作用域, 使其在程序中的各个源文件和各个函数中都可以使用此全局变量, 就需要用“extern”关键字来声明全局变量。外部变量声明的一般 格式为: extern变量名
外部变量的使用主要分为两种情况: (1)在一个源代码文件内声明外部变量。 (2)在多个源代码文件间声明外部变量。

3.2.1 局部变量 3.2.2 全局变量 3.2.3 变量的屏蔽效果6源自3.2.1 局部变量
在C语言中,变量的作用域只在一定范围内有效称之为局部变量。 在以下各位置定义的变量均属于局部变量: (1)在函数体内定义的变量,变量的作用域局限于函数体内; (2)在复合语句内定义的变量,变量的作用域局限于复合语句 内; (3)有参函数的形参也是局部变量,变量的作用域只在其所在 的函数范围内有效。

14
3.3.5 寄存器变量

为了提高程序的执行效率,C语言允许变量存放在CPU的寄存器中, 这样CPU就不用经常花费较长时间访问内存区。这样的变量称之 为寄存器变量。使用关键字“register”声明,声明格式为:
register 数据类型 变量名 【例3-6】通过求20的阶乘,介绍寄存器变量。
第3章 C语言的变量
1
第3章 C语言的变量

3.1 变量的生存期和作用域
3.2 3.3 3.4 3.5 局部变量与全局变量 变量的存储与变量的作用域 变量使用实例 小结
2
3.1 变量的生存期和作用域

3.1.1 变量的生存期 3.1.2 变量的作用域
3
3.1.1 变量的生存期
12
3.3.3 静态变量



静态变量一般存储在静态数据区,用“static”关键字来声明,静 态变量一般分为静态全局变量和静态局部变量,定义的一般格式 为: static 数据类型 变量名 静态局部变量 局部变量加以static进行声明就是静态局部变量。 【例3-5】通过求1到100的和,说明静态局部变量的使用方法。 静态全局变量 全局变量加以static进行声明就是静态全局变量。
4
3.1.2 变量的作用域



全局作用域 对于具有全局作用域的变量,可以在程序的任何位置访问它们。 局部作用域 变量在复合语句内部或者函数内部声明,无法被复合语句外或者 其他函数的代码所访问。 文件作用域 变量仅在声明它的源代码文件中可见,一般用static修饰符指定变 量具有文件作用域。
5
3.2 局部变量与全局变量
15
3.3.6 变量存储类型小结

按照作用域分类如图所示:
局部变量
自动变量 静态局部变量 寄存器变量 函数形参
非静态全局变量 (可用 extern 声明) 静态全局变量
16
3.3.6 变量存储类型小结

按照生存期分类,如图所示:
自动变量 动态存储 寄存器变量 函数形参 静态局部变量 静态存储 全局变量
相关文档
最新文档