标识符的作用范围,变量的声明和定义,auto,register自动变量,代码作用域的静态变量

文件作用范围

int total;

int max();

作用范围:从声明的位置开始,到文件末尾

函数作用范围

程序块作用范围

函数原型作用范围



变量的声明

声明:给编译器看的,告知有这么一个变量,但是此变量是在别的文件里定义的。方便编译器做类型检测

extern int a;//正确的写法 extern 声明的关键字

定义:为变量要开辟内存空间

一个全局变量可否被多次定义?不可以

一个全局变量可否被多次声明?可以


int total;

int max(int ,int);

int main(){


}


这个total 是声明还是定义呢?如果整个文件里只有一个total,就是定义,定义没有赋初始值,如果在别的文件里也有int toal=10;这个total 就退化成声明了。


对于变量,定义意味着创建,即为其分配内存

auto自动变量:

 所有自动变量的声明周期就是变量所在的大括号范围

局部变量的缺省类别



register 自动变量

变量都是在内存当中。如果能把变量放到cpu的寄存器里面,代码执行效率会更高。


register int b;

优先分配寄存器,而不分配内存,但不是绝对分配寄存器。因为cpu的寄存器是按照个数的。arm 37个,x86 17个 。个数太少的时候,是不会分配的。

static(静态变量):可以用于在程序块中定义的变量

      退出程序库后依然存在。并保留值

但不改变其作用范围,既只能在所在的程序块内被使用。

        会自动初始化,缺省值为0或'\0'

#include <stdlib.h>
int fun(void)
{
	static int a = 10; //静态局部变量,作用域本函数内,声明周期整个程序运行结束时才释放,并且a的初始化赋值一次。
	printf("%d\n",a);
	a++;
	return 0;
}
int main(){
	fun();
	fun();
	fun();
	return 0;
}

不是在代码块中

static int a = 10; //限定了作用域,a只能在本文件内使用,未初始化的全部变量是0

int fun(){


}




































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 变量声明定义是两个不同的概念。 变量声明指的是告诉编译器变量的名称和类型,告诉编译器在程序中有这样一个变量存在,但并没有为该变量分配内存空间。通常变量声明是在程序的头部进行,以便让程序中其他地方可以引用该变量变量定义指的是为变量分配内存空间并指定其初始值。变量定义可以在程序的任何地方进行,通常是在变量第一次使用之前进行。 总的来说,变量声明是让编译器知道有一个变量的存在,而变量定义是在编译器中为该变量分配内存空间并初始化该变量的值。 ### 回答2: 变量声明定义是编程中常用的两个术语,它们表示了两个不同的概念。 变量声明是指在编程中事先声明一个变量的名称和数据类型,但并不进行初始化或分配内存空间。在声明阶段,编译器会为该变量分配内存空间,并将其所属的数据类型和名称记录在符号表中,以便在后续的代码编译和链接中使用。变量声明通常出现在程序的头部或函数的参数列表中。 变量定义是指在编程中为一个已经声明变量分配内存空间并进行初始化。在定义阶段,编译器会为该变量分配相应的内存空间,并根据变量的数据类型将其初始化为一个特定的值,或者根据需要从用户或其他变量获取初始值。变量定义通常在声明之后的具体代码中进行。 总结来说,变量声明是在编程中预先声明变量的名称和数据类型,而变量定义是在声明的基础上为变量分配内存空间并进行初始化。变量声明只相当于一个承诺,而变量定义则是将承诺变为现实并分配相应的资源。在实际编程中,经常需要先声明变量,然后在需要的时候再进行定义。 ### 回答3: 变量声明定义是程序中常见的两个概念,它们在含义和作用上存在一定的差异。 变量声明指的是在程序中明确地告诉编译器某个变量的存在以及变量的类型,而不给出具体的初始值。变量声明告诉编译器某个标识符将会作为一个变量在程序中使用,并分配适当的内存空间,以便在程序中引用该变量。一个变量可以被多次声明,但只能被定义一次。 变量定义则指的是在程序中明确地告诉编译器某个变量的存在、类型和初始值。变量定义不仅告诉编译器变量的存在和类型,还为该变量分配了内存空间,并给出了初始值。定义一个变量即为该变量分配存储空间,使其可以在程序运行时存储数据。变量定义只能进行一次。 总而言之,变量声明是为变量分配了内存空间,告诉编译器该变量的类型和存在;变量定义是为变量分配了内存空间,并给出了初始值。变量声明只是引入了变量的概念,而变量定义则是为变量指定了具体的存储空间和初始值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值