一、什么是变量?
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“语言中的变量有一个更深的理解。