无基础也能看懂的C语言变量详解

一、什么是变量?

1,变量可以保存程序运行时用户输入的数据(可以是一个数字,也可以是一个字符)
2,变量的创建需要定义类型(int long char double float short)
3,创建变量时,程序会开辟一个空间用于存放赋给变量的值,而且这个空间的值是可以替换的(就相当于一杯矿泉水,你可以把矿泉水替换成果汁)

二、变量分为哪几种?

变量分为局部变量全局变量两种。

1、局部变量

局部变量的的定义: 局部变量是在函数内部定义并使用的变量,它只在函数内部有效。
在语句块中也可以定义变量,它的作用域(就是该变量的使用范围,起作用的地方)只限于当前语句块,例如 if 语句中定义的变量
解析:每个函数在执行时,系统都会为该函数分配一块“临时空间”,该函数所有的局部变量都保存在其中
当函数执行完之后,该空间被释放,局部变量也就随之失效,因此离开函数之后就不能访问该函数的局部变量了,否则会有异常信息提示:NameError

a、局部变量的的定义

int main (){
	int  i = 0;
	//  int  声明类型是整形
	//   i   变量名
	//   =   赋值(不是相等)将右值赋给左值(就是将右边的值给左边的值)

}

1、全局变量及一些需要注意的点

全局变量的定义:在所有函数外部定义的变量称为全局变量,它的作用域默认是整个程序,也就是整个工程,包括工程下的一些文件(.c .h 文件)

假设定义了两个.c文件要在第二个文件中调用第一个文件的全局变量需要定义,例如:

int i = 1//第一个文件中的全局变量
int main(){
	//第二个文件
	extern int i;  //声明(意思是在外部文件有一个int i的全局变量,在这里说明,之后就可以使用了)
}

需要注意的是:由于C语言是从上到下执行的,假如定义两个函数,函数1和函数2,要使全局变量作用于两个函数,需要在两个函数之前定义全局变量
例如:

int i = 0;   //定义在两个函数之前才都能被两个函数调用
void game1(){}  //函数1
void game2(){}  //函数2
int main(){
	//主函数
}

三、局部变量与全局变量的冲突

当全局变量与局部变量同名时,局部优先
为什么呢?因为在局部范围内如果局部变量的名称和全局变量名称相同时,全局变量会被 “ 屏蔽 ” ,不再起作用
在C语言中变量的使用遵循就近原则如果当前的作用域存在 同名变量 就不会向更大的作用域寻找变量。
值得一提的是 { } 花括号包围的代码也拥有独立的作用域

1,难点理解

C语言规定:只能以更小的作用域向更大的作用域中去寻找变量,而不能反过来使用更小作用域中的变量,这个时候就近原则就不管用了。例如以下代码:

int main(){
	int i = 22;
	if(1){
		int i = 0;
	}
	printf("%d",i);  //打印i
}

这时我们看第一个 i == 22 这个 i 的作用域是整个main 函数
if 里面的 i 作用域是整个if
我们要用printf 打印 i ,而printf 他是在 main 函数里 ,printf找这个 i 只会向更大的作用域寻找
有的人这时候就有疑问了。 if 的作用域不是比 printf要大吗?虽然是,但是if结束变量 i 也会销毁,所以这里只能寻找 main 函数的变量i

总结

以上就是今天要讲的内容,希望大家对C“语言中的变量有一个更深的理解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值