例5.12外部变量的使用。我们把例5.12稍加改动:存储类型标识符extern告诉系统,变量类型和名字已在别处定义过了,这里的extern int i;只是说明一下i是外部变量。如果外部变量的定义在使用之前,不用extern说明也可以;但如果定义在使用后面,说明就是不可缺少的了。最后应说明的是,外部变量提供了一种在函数间自由传递数据的机制,为编写程序带来了一些方便。但是,外部变量也有很大的副作用,它破坏了函数的封闭性,使程序的控制复杂起来。......
2023-11-18
在变量名及其类型之前加上关键字static,就规定该变量的存储类型为静态的。一个静态变量的存储形式是这样的:当第一次调用该变量所在的函数时,系统为它分配存储单元,当程序从函数退出时,并不释放静态变量所占的存储单元,其值也仍然保留,下次再调用时,静态变量仍拥有上次调用时留下的值。
例5.11 一个静态变量和自动变量比较的程序。
运行结果:
auto_var=0,static_var=0
auto_var=0,static_var=1(www.chuimin.cn)
auto_var=0,static_var=2
auto_var=0,static_var=3
auto_var=0,static_var=4
上例中,main()函数共5次调用了auto_static()函数,每次调用时自动变量auto_var都输出0值,这是因为每次调用时系统都给auto_var分配存储单元并赋初值0。虽然语句“auto_var++;”使auto_var增加到1,但auto_static()运行结束时,分配给auto_var的存储单元就被释放,下次还是重新开始,而static_var只是在第一次被调用时才分配给存储单元并赋初值0,语句“static_var++;”使static_var增加了1。当auto_static()结束运行时,static_var的值仍然保留,再次调用auto_static()函数时,系统不再为它重新分配存储空间并赋初值,而是采用以前留下的值,因此static_var的值每次调用都会增加1。
有关C语言程序设计 第2版的文章
例5.12外部变量的使用。我们把例5.12稍加改动:存储类型标识符extern告诉系统,变量类型和名字已在别处定义过了,这里的extern int i;只是说明一下i是外部变量。如果外部变量的定义在使用之前,不用extern说明也可以;但如果定义在使用后面,说明就是不可缺少的了。最后应说明的是,外部变量提供了一种在函数间自由传递数据的机制,为编写程序带来了一些方便。但是,外部变量也有很大的副作用,它破坏了函数的封闭性,使程序的控制复杂起来。......
2023-11-18
图5.12extern关键字对全局变量的作用例5.16程序中在第12行定义了全局变量x并赋初值为100,根据定义其作用域为第12~17行所构成的区间。图5.13extern关键字对全局变量的作用在图5.13中标注为②的源程序文件中定义了全局变量y,该全局变量默认的作用域范围为其定义所在的整个源程序文件。自动变量的生存期与其所在函数被调用运行的时间相同,并且自动变量的值在函数的多次调用中都不会保留。......
2023-11-20
程序在编译时将每一个变量名对应一个地址,在内存中不再出现变量名,而只有地址。对变量值的存取通过地址进行,访问方式通常有两种。直接利用变量地址进行存取。在例6.1 中,当系统执行输入语句scanf时,根据变量i 与地址的对应关系,找到变量i 的起始地址2011,然后把键盘输入的数值存入&i 所指示的单元中。变量i在内存中的地址和数值,如图6.1 所示。这里,指针变量只能存放地址,而不能存放其他数据。......
2023-10-21
图5.7两层函数嵌套调用示意图函数的嵌套调用即一个函数在被调用的过程中又调用了另外的一个函数。函数fac和powers的返回值类型均被设计为double型,其主要目的是为了避免n!x:0.5//0.5从键盘输入的数据0.50 powers of e=1.648721//程序执行结果......
2023-11-20
C语言把括号、赋值、强制类型转换等都作为运算符处理,灵活使用各种运算符可以实现在其他高级语言中难以实现的运算,功能强大。另外,C语言还把括号、下标、强制类型转换、取地址等都作为运算符处理,并通过与算数运算符的组合达到不同的目的,从而使程序更加简洁明了。C语言具有超强的可移植性。总之,C语言在运算符方面是比较容易让人混淆的。......
2023-11-18
C语言的最大特点是:功能强、使用方便灵活。由于这个“灵活”给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。在C语言中大写字母和小写字母是两个不同的字符。C语言规定以’\0’作字符串结束标志,它是由系统自动加上的。当一个语句中使用多层括弧时常出现这类错误。main()C语言中对数组的定义或引用数组元素时必须用方括弧。......
2023-11-18
定义了共用体变量后,即可使用它。若需对共用体变量初始化,只能对它的第一个成员赋初始值。例如,对data类型共用体变量,有以下语句:x.a=100;strcpy;x.f=90.5;则只有x.f是有效的,x.a与x.n目前数据是无意义的,因为后面的赋值语句将前面共用体成员数据覆盖了。运行结果:101,102169612,0,02程序说明:共用体变量a共占用4个字节的存储空间,执行“strcpy;”语句后,a的成员字符数组c的3个字节被赋值为字符串“AB”,对应的各字符的ASCII码值分别存放在a的对应空间中。......
2023-11-18
针对不同的实际应用,数据排序方法有很多种。本节介绍两种常用排序方法的基本思想和实现方法,帮助读者初步理解排序方法的计算机解决思路。②不考虑已排好序的数据,将剩下的数据作为待排序列。编写程序实现冒泡排序算法,对随机生成的10个3位整数按升序进行排序并输出。......
2023-11-20
相关推荐