代码编织梦想

auto

——作用域和寿命:只能做局部变量;

——在函数内或复合语句内定义的自动变量可以省略auto,而在外部定义的无auto的变量显然不是自动变量;

(外部变量,即“全局变量”,的寿命和作用域是全局的)


register

——作用域和寿命:同auto,即“局部可见”;

——分配通用寄存器的条件:1)有空闲的寄存器;2)变量所表示的数据的长度不超过寄存器的位长;


extern

——作用域和寿命:全局存在,全局可见;

——用来访问跨文件作用域的全局变量,在引用之前,要用extern作外部声明;

——如果外部变量不在文件的开头部分定义,则其有效的作用范围只限于从定义处到文件结束。如果定义点之前的函数想引用外部变量,则应该在引用前加extern。

——对外部变量做引用说明时不分配存储,也不初始化。

(显示初始化、非显示初始化 可以顾名思义咯)


static

  • 定义存储类型(静态);
  • 修饰不能被其他文件引用的全局变量和函数;

初始化:

全局变量:如果不显示初始化,则编译器会自动初始化为默认值,比如int默认值0;

局部static变量:static int a = 1; // 只会初始化一次,以后每次进入函数都不会重新赋值为1;初始化和赋值是不同的概念。

const

Const int a;

Int const a;

Const int *a; // 是不是还有int const *a,两者一样???????????

Int *const a;

Int const *a const;//是这个格式吗,应该是int const * const a吧????????????????

前两个的作用是一样的,a是一个常整型数。

第三个a是一个指向常整型数的指针。

第四个a是一个指向整型数的常指针。

最后一个a是一个指向常整型数的常指针。

(原则就是const挨谁近就是修饰谁?)


volatile 

volatile 是一个变量声明限定词。

它告诉编译器,它所修饰的变量的值可能会在任何时刻被意外的更新,即便与该变量相关的上下文没有任何对其进行修改的语句。造成这种“意外更新”的原因大致有:

  • 在中断处理程序中可能被修改的全局变量;
  • 在内存中进行地址映射的设备寄存器;
  • 多线程应用程序中的全局变量;

语法:

要想给一个变量加上volatile 限定,只需要在变量类型声明附之前/后加入一个volatile 关键字就可以了。

下面的两个实例是等效的,它们都是将foo 声明为一个“需要被实时更新”的int型变量。

volatile int foo;

int volatile foo;

同样,声明一个指向volatile 型变量的指针也是非常类似的。

下面的两个声明都是将foo 定义为一个指向volatile integer 型变量的指针。

volatile int * foo;

int volatile * foo;

一个Volatile 型的指针指向一个非volatile 型变量的情况非常少见,尽管如此,我还是要给出他的语法:

int * volatile foo;

最后一种形式,针对你真的需要一个volatile 型的指针指向一个volatile 型的情形:

int volatile * volatile foo;

最后,如果你将volatile 应用在结构体或者是公用体上,那么该结构体/公用体内的所有内容就都带有volatile 属性了。

如果你并不想这样(牵一发而动全身),你可以仅仅在结构体/公用体中的某一个成员上单独使用该限定。

c语言中变量的作用域和生命周期-爱代码爱编程

谭浩强书: 从存储模型可以看到,谭浩强和钱能的模型有一定的对应关系:       静态存储区  ->  全局数据区       动态存储区  ->  栈(stack) 变量的类型:  1. 局部变量和全局变量     局部变量也称为内部变量。 局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种

变量的作用域和存储类型_yudale的博客-爱代码爱编程

1.代码块:用“{}”分块出来的区域叫做代码块。 2.作用域: 变量声明位置 变量声明位置变量作用域范围文件作用域代码块外(声明处,源文件结尾)代码块作用域代码块内(声明处,代码块结尾)原型作用域函数声明中的参数只适用函数声明中的参数名函数作用域略 略 示例: int func(int a, i

变量的作用域和生存期_sobremesa1的博客-爱代码爱编程_变量的作用域和生存期

变量的作用域:即变量的作用范围(有效范围)。 表现为变量有的可以在整个程序或其他程序中进行引用,有的则只能在局部范围内引用。 按其作用域范围可分为 局部变量和全局变量 变量的生存期:变量从生成到被撤销的这段时间。实际上就是变量占用内存的时间。 按其生存期可分为 动态变量和静态变量 变量只能在其生存期内被引用,而变量的作用域直接影响变量的生存期。

关于变量作用域(内部、外部)及存储类型(auto、static、register)的总结_阿喵不是猫的博客-爱代码爱编程

可见性就是在在什么地方可以调用,能调用的地方就是可见,而存在性,就是在什么地方什么时候初始化,然后使用完后在什么地方什么时候释放,存在性一般是在运行时的生命周期内起作用的,这个题目里除了static其他都是在函数结束时自动释放了。      一、变量的 作用域 与 存储类型 一个 C 程序( *.EXE )由若干个 C 文件( *.C )组成,一个( 

c语言题库之判断题_aunry☀️的博客-爱代码爱编程_枚举类型中的元素都具有一个整型值

1、C 语言具有简洁明了的特点。(1分) 正确 2、预处理命令的前面必须加一个“#”号。(1分) 正确 3、标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。(1分) 正确 4、在if语句的三种

C语言判断题大集合-爱代码爱编程

三、判断题(每小题1分) 1、C 语言具有简洁明了的特点。(1分) 正确 2、预处理命令的前面必须加一个“#”号。(1分) 正确 3、标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。(1分) 正确 4、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。(1分) 正确 5、c

错题集-爱代码爱编程

C++错题集 直接访问就是直接利用变量的地址直接进行访问。 (√) //直接访问就是系统直接将变量所在内存单元的值取出,间接访问是直接访问变量地址。 结构体类型本身不占用内存空间,结构体变量占用内存空间。 (√) // 结构体类型的定义只是告诉编译器该如何表示数据,但是它没有让计算机为其分配空间。结构体类型的定义就是结构体的声明,不管是定义还是申明,

PTA选择判断——2019_4Basic Programming-爱代码爱编程

1-1 标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。 对 1-2 C 语言标准格式输入函数 scanf() 的参数表中要使用变量的地址值。 对 1-3 浮点型常量的指数表示中 ,e 是可以省略的。 错 1-4 表达式语句和表达式没有什么区别。 错 1-5 条件运算符?和:是一对运算符,不能分开单独使用。 对 1-

c-变量的生命周期及存储类型-爱代码爱编程

变量的存储类型 动态存储 auto 自动变量 register 寄存器变量 静态存储 static 静态变量 extern 外部变量 1.自动变量 类型说明符为auto 通过auto关键字来修饰一个局部变量。这意味着每一次执行到定义变量的时候,都会产生一个行的变量,并且重新对它初始化   这种存储类型是C语言程序中使用最广泛的一种类型。C语言规定,函

C语言—变量的存储方式、作用域和生存周期-爱代码爱编程

C语言—变量的存储方式、作用域和生存周期 一、变量的存储方式二、变量的作用域和生存周期1.局部变量的存储类别a.普通局部变量b.static局部变量c.寄存器变量(register变量)2.全局变量的存储类别a.在一个文件内扩展全局变量的作用域b.将全局变量的作用域扩展到其它文件c.将全局变量的作用域限制在本文件中三、static关键字四、字符串存

c语言变量作用域和寿命,2018年9月计算机二级C语言考试巩固强化题(3)-爱代码爱编程

摘要 2018年9月计算机二级C语言考试巩固强化题(3). 单选题 1.下列变量名中,非法的是( C )。 A.A25 B.My_car C.My-str D.abc 2.下列常量中,十六进制int型常量是( A )。 A.0x5f B.x2a C.046 D.7a 3.下列常量中,不是字符常量的是( B )。 A.\n B."y"

c语言变量作用域和寿命,c语言题库之判断题-爱代码爱编程

三、判断题(每小题1分) 1、C语言具有简洁明了的特点。(1分) 正确 2、预处理命令的前面必须加一个“#”号。(1分) 正确 3、标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。(1分) 正确 4、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。(1

c语言变量的作用域和存储类别,C语言中的四种存储类型-爱代码爱编程

转自:http://blog.csdn.net/u014041012/article/details/46432441 一、 首先来说说数据的类型,所有的数据都有两种类型,一是常见的数据类型,如int,float等,一种便是今天的重头戏,存储类型。总共有四种存储类型的变量,分别为自动变量(auto)、静态变量(static)、外部变量(extern)

C语言入门(5)变量的作用域以及生命周期的概念-爱代码爱编程

目录 一,变量的作用域 二,变量的生命周期 这一章,我们来大概熟悉一下变量的作用域和生命周期。 一,变量的作用域 概念:在程序中的哪一个地方能用在哪个地方不能用。(由此可以衍生出局部变量和全局变量) ①局部变量:局部变量的作用域相对于全局变量的作用域是很小的,局部变量的作用域只在定义了它的花括号内可以使用({}),如下图:整型变量c的作用域只在

C语言判断题,正确定义,易错点知识解析-爱代码爱编程

文件的读函数是从输入文件中读取信息,并存放在内存中。在switch语句中,多个case可以共用一组执行语句。条件运算符?和:是一对运算符,不能分开单独使用。do-while循环至少要执行一次循环语句。任何表达式语句都是表达式加分号组成的。在switch语句中,每一个的case常量表达式的值不可以相同。C 语言中 , 字符串常量最后一个字符是结束标志 , 该

变量作用域和存储类型-爱代码爱编程

变量作用域和存储类型 变量类型 变量类型 一、按作用域,变量类型1、局部变量 和 局部静态变量 1.1 局部变量(函数内,char x;):x仅限定义该变量的函数内部自己使用,在函数被调用而产生,随函数返回而消灭。 1.2 局部静态变量(函数内,static char x;):x仅限定义该变量的函数内部自己使用,在函数下次被调用时,x可恢复