c语言变量的作用域和生存期 static定义的函数,怎么使用?
static定义的函数,怎么使用?
静态定义了变量的使用:
一、静态局部变量:
1.静态类的内部变量和auto自动变量一样是特定函数的局部变量(即没有静态声明的局部变量),即变量只能在定义它的函数中使用,两个变量的作用域是一样的;两者的区别在于,auto自动变量会随着函数被调用和退出而存在和消失,而静态局部变量不会,无论其所在的函数是否被调用,它都会一直存在;然而,虽然变量仍然存在,但它不能被使用。如果再次调用定义它的函数,它可以继续使用,并且保存上次调用后留下的值。换句话说,静态类型的内部变量是一个只能在特定函数中使用,但总是占用存储空间的变量。
2.如果在定义静态变量的时候初始化了函数体,那么以后程序就不会初始化了(函数中出现的静态变量基本类型的初始化语句只会在第一次调用时执行)。但是,将初始值赋给自动变量是在调用函数时完成的,每次调用函数时再次赋予初始值相当于执行一个赋值语句。
3.静态局部变量的初始化表达式必须是常量或常量表达式。即使局部静态变量定义时没有初始值,系统也会自动赋初值0(对于数值型变量)或空字符(对于字符型变量);静态变量的初始值是0。对于自动变量auto,如果没有赋值初始值,它的值将是一个不确定的值。
4.当一个函数被多次调用,并且需要在调用之间保留一些变量的值时,可以考虑静态局部变量。虽然全局变量也可以达到上述目的,但是全局变量有时会引起意想不到的副作用,所以使用局部静态变量还是合适的。
注意:局部静态变量占用内存时间长,可读性差,除非必要,尽量避免使用局部静态变量。
第二,静态全局变量
全局变量(外部变量)的描述以static开头,形成静态全局变量。
全局变量本身就是静态存储方法,静态全局变量也是静态存储方法。
两者在存储上没有区别。
虽然两者的区别在于:
1.非静态全局变量的范围是整个源程序。当一个源程序包含多个源文件时,非静态全局变量在所有源文件中都有效。
2.静态全局变量限制了它的作用域,即它只在定义该变量的源文件中有效,不能在同一源程序的其他源文件中使用。
由于静态全局变量的作用域仅限于一个源文件,并且只能由源文件中的函数共享,因此可以避免在其他源文件中引起错误。
从上面的分析可以看出
把局部变量改成静态变量就改变了它的存储,也就是改变了它的生存期。
保持当一个全局变量被改为静态变量时,它的作用域也随之改变,这就限制了它的使用范围。
所以静电在不同地方的作用是不一样的。应该引起重视。
静态定义了变量的使用:
一、静态局部变量:
1.静态类的内部变量和auto自动变量一样是特定函数的局部变量(即没有静态声明的局部变量),即变量只能在定义它的函数中使用,两个变量的作用域是一样的;两者的区别在于,auto自动变量会随着函数被调用和退出而存在和消失,而静态局部变量不会,无论其所在的函数是否被调用,它都会一直存在;然而,虽然变量仍然存在,但它不能被使用。如果再次调用定义它的函数,它可以继续使用,并且保存上次调用后留下的值。换句话说,静态类型的内部变量是一个只能在特定函数中使用,但总是占用存储空间的变量。
2.如果在定义静态变量的时候初始化了函数体,那么以后程序就不会初始化了(函数中出现的静态变量基本类型的初始化语句只会在第一次调用时执行)。但是,将初始值赋给自动变量是在调用函数时完成的,每次调用函数时再次赋予初始值相当于执行一个赋值语句。
3.静态局部变量的初始化表达式必须是常量或常量表达式。即使局部静态变量定义时没有初始值,系统也会自动赋初值0(对于数值型变量)或空字符(对于字符型变量);静态变量的初始值是0。对于自动变量auto,如果没有赋值初始值,它的值将是一个不确定的值。
4.当一个函数被多次调用,并且需要在调用之间保留一些变量的值时,可以考虑静态局部变量。虽然全局变量也可以达到上述目的,但是全局变量有时会引起意想不到的副作用,所以使用局部静态变量还是合适的。
注意:局部静态变量占用内存时间长,可读性差,除非必要,尽量避免使用局部静态变量。
第二,静态全局变量
全局变量(外部变量)的描述以static开头,形成静态全局变量。
全局变量本身就是静态存储方法,静态全局变量也是静态存储方法。
两者在存储上没有区别。
虽然两者的区别在于:
1.非静态全局变量的范围是整个源程序。当一个源程序包含多个源文件时,非静态全局变量在所有源文件中都有效。
2.静态全局变量限制了它的作用域,即它只在定义该变量的源文件中有效,不能在同一源程序的其他源文件中使用。
因为静态全局变量的作用域仅限于一个源文件,并且只能由源文件中的函数共享,所以可以避免在其他源文件中使用。文件中出现错误。
把局部变量改成静态变量就改变了它的存储,也就是改变了它的生存期。
将全局变量更改为静态变量会改变其范围并限制其使用。
所以静电在不同地方的作用是不一样的。应该引起重视。
2021年9月计算机二级c语言考试大纲?
2021年全国计算机等级考试二级C语言程序设计考试大纲2021版
基本要求:
1.熟悉Visual C 6。0集成开发环境。
2.掌握结构化编程的方法,具有良好的编程风格。
3.掌握编程中简单的数据结构和算法,能读懂简单的程序。
4.在Visual C 6的集成环境下。0,我能编写简单的C程序,具备基本的程序改错能力。
考试内容:
一、C语言程序的结构
1.程序的组成,主要功能和其他功能。
2.头文件、数据描述、函数的开始和结束标记以及程序中的注释。
3.源程序的编写格式。
4.c语言的风格。
二、数据类型及其操作
1.C s数据类型:基本类型、构造类型、指针类型、无值类型及其定义方法。
2.C运算符的类型、运算优先级和组合。
3.不同类型数据之间的转换和操作。
4.c表达式类型赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式和求值规则。
二级考试公共基础知识大纲及样题见高等教育出版社出版的《《全国计算机等级考试二级教程———公共基础知识2013 年版》》附录。
第三,基本句
1.表达式语句,空语句,复合语句。
2.调用输入输出函数,正确输入数据,正确设计输出格式。
第四,选择结构化编程
1.使用if语句实现选择结构。
2.用switch语句实现多分支选择结构。
3.选择结构的嵌套。
五、循环结构程序设计
1.对于循环结构。
2.while和do-while循环结构。
3.继续语句和中断语句。
4.循环嵌套。
不及物动词数组的定义和引用
1.一维数组和二维数组的定义和初始化以及数组元素的引用。
2.字符串和字符数组。
七、功能
1.库函数的正确调用。
2.函数的定义方法。
3.函数的类型和返回值。
4.形式参数和真实参数,参数值的传递。
5.函数的正确调用、嵌套调用和递归调用。
6.局部变量和全局变量。
7.变量的存储类别:自动、静态、寄存器、外部、变量的作用域和生存期。
八、编译预处理
1.宏定义并调用不带参数的宏和带参数的宏。
2. "该文件包含冶金处理。
九、指针
1.地址和指针变量、地址运算符和地址运算符的概念。
2.一维和二维数组和字符串的地址,以及指向变量、数组、字符串、函数和结构的指针。
定义。通过指针引用上述类型的数据。
3.使用指针作为函数参数。
4.返回地址值的函数。
5.指针数组,指针对指针。
X.结构手段 "结构熔炼和社区手段 "联合冶炼公司;"
1.用typedef解释一个新类型。
2.结构的定义和成员的公共体类型数据和引用。
3.结构形成链表,建立单向链表,输出、删除、插入节点数据。
十一、位操作254
1.位运算符的含义和用法。
2.简单的位操作。
十二。文件操作
只需要缓冲文件系统,即高级磁盘I/ O系统,不需要非标准缓冲文件系统,即低级磁盘I/ O系统。
1.文件类型指针。
2.打开和关闭文件fopen,fclose。
3.文件读写:fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用,rewind,fseek函数的应用。
考试方法:
机考,考试时长120分钟,满分100分。
问题类型和分数:
选择题40分包括公共基础知识10分,操作题60分包括填空题、改错题和编程题。
2考试环境
Visual C 6。0。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。