C语言 四种作用域

代码块作用域:

任何位于一对花括号之间是一个代码块,代码块内声明的标识符具有代码块作用域,嵌套代码块内,内部变量会屏蔽外部相同标示的标示符,非嵌套代码块,不会同时处于活动状态所以不会屏蔽。

int main()
{
	int value = 123;

	{
		int value = 456;
		printf("%d\n", value);
	}

	{
		int value = 789;
		printf("%d\n", value);
	}

	printf("%d\n", value);
}

123和456以及789是嵌套,会屏蔽123,456和789是非嵌套不互相影响。

  

文件作用域

所有在代码块之外声明的标识符都具有文件作用域,标示这些标识符,从声明之处到所在文件结尾都可以访问,当使用

#include

包含头文件时,头文件内部的声明并不局限于头文件的文件尾,而是#include的文件尾。

原型作用域

指函数声明中的参数,为了防止参数名与程序其他部分名字冲突。事实上,唯一的冲突就是在一个原型中不止一次使用同一个名字。

函数作用域

特指goto语句的作用域,goto对函数内所有变量可见。

#include <stdio.h>

int main()
{
	char msg[] = "this is outer\n";
	label:
		printf("%s\n", msg);
	{
		char msg[] = "this is inner\n";
		printf("%s\n", msg);
		goto label;
	}
}
会一直输出:
this is outer

  

时间: 2024-10-13 20:50:40

C语言 四种作用域的相关文章

JSP内置对象——九大内置对象简介与四种作用域范围以及Web程序的请求和响应模式

最近在学习JSP相关基础知识,我们都知道JSP当中存在一组不使用new关键字就可以在脚本和表达式中使用的对象,在Web开发中经常使用.为了能更好的理解这些对象,在此对JSP内置对象作一些归纳. 目录: JSP内置对象——九大内置对象简介与四种作用域范围以及Web程序的请求和响应模式 JSP内置对象——out(待更新) JSP内置对象——request/response(待更新) JSP内置对象——session(待更新) JSP内置对象——application(待更新) JSP内置对象——其他

jsp九大内置对象、四种作用域、跳转方式

jsp有四种属性范围: page -> 页面级别,显然只有在一个页面内可用. request -> 请求级别 服务器跳转,一次请求之后消失. session -> 会话级别 客户端跳转(服务器跳转),与浏览器有关,ie是在重新打开ie时才会不同. application = 应用级别,当重启服务器时才会消失客户端跳转: 客户端跳转是服务器将请求结果返回给客户端,客户端再向服务器发起另一次请求.在客户端跳转的过程中,客户端一定要参与跳转的过程.客户端跳转后的url是最后一次请求的地址.客户

C++ Primer 学习笔记_23_类与数据抽象(9)--四种对象生存期和作用域、static 用法总结

C++ Primer 学习笔记_23_类与数据抽象(9)--四种对象生存期和作用域.static 用法总结 前言: 从上图可知,程序占用的内存被分了以下几部分. (1).栈区(stack) 存放函数的参数值,局部变量的值等,内存的分配是连续的.栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁,其特点是效率高,但空间大小有限 注意:通常栈空间容量比较小,一般是1MB-2MB,所以体积比较大的对象不适合在栈中分配. (2).堆区(heap) 由malloc系列函数或new操作符

Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool。后面三种布尔类型是为了与其他语言兼容而引入的

bool是LongBool类型. Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool.后面三种布尔类型是为了与其他语言兼容而引入的,一般情况下建议使用Boolean类型. 这四种类型的布尔值占用内存的数量如下: Boolean 1 Byte ByteBool 1 Byte WordBool 2 Bytes(1 Word) LongBool 4 Bytes(2 Words) 对于ByteBool,WordBool和LongBool三种类型True

C语言K&R习题系列——句子中一个空格代替多个空格的四种方法

原题: Write a program to copy its input to its output, replacing each string of one or more blanks by a single blank. 第一种: 这种最常用,设置一个inspace作为布尔变量,标志当前输入是否在字符中,或在字符外 #include <stdio.h>   int main(void) {   int c;   int inspace=0;     while((c = getcha

SQL的四种语言和数据库范式

1. SQL的四种语言 DDL(Data Definition Language)数据库定义语言 CREATE ALTER DROP TRUNCATE COMMENT RENAME DML(Data Manipulation Language)数据操纵语言 SELECT INSERT UPDATE DELETE MERGE CALL EXPLAIN PLAN LOCK TABLE DCL(Data Control Language)数据库控制语言 GRANT REVOKE TCL(Transac

C语言中返回字符串函数的四种实现方法

有四种方式: 1.使用堆空间,返回申请的堆地址,注意释放 2.函数参数传递指针,返回该指针 3.返回函数内定义的静态变量(共享) 4.返回全局变量 其实就是要返回一个有效的指针,尾部变量退出后就无效了. 使用分配的内存,地址是有效 char   *fun() {         char*   s   =   (char*)calloc(100,   sizeof(char*)   );         if   (s)                 strcpy   (   s   ,  

C语言支持的四种变量存储类型

http://blog.csdn.net/zhandoushi1982/article/details/5425835 一)auto:auto称为自动变量(局部变量).局部变量是指在函数内部说明的变量(有时也称为自动变量).所有的非全程变量都被认为是局部变量,所以auto实际上从来不用.局部变量在函数调用时自动产生,但不会自动初始化,随函数调用的结束,这个变量也就自动消失了.下次调用此函数时再自动产生,还要再赋值,退出时又自动消失.二)static:static称为静态变量.根据变量的类型可以分

C语言K&amp;R习题系列——句子中一个空格代替多个空格的四种方法

原题: Write a program to copy its input to its output, replacing each string of one or more blanks by a single blank. 第一种: 这种最常用,设置一个inspace作为布尔变量,标志当前输入是否在字符中,或在字符外 #include <stdio.h> int main(void) { int c; int inspace=0; while((c = getchar()) != EO