五、变量的作用域
C语言中的变量分为局部变量和全局变量。
局部变量是在函数内部定义的变量,它的作用域仅限于该函数。当函数被调用时,系统会为该函数分配一块栈内存,用于存储函数的局部变量。当函数执行完毕后,这块栈内存会被自动释放,局部变量也随之消失;
全局变量是在函数外部定义的变量,它可以在整个程序范围内访问。
变量可以被使用的区域就叫做“变量的作用域”。
举例: 下图所示代码 (entern 一般不加)
全局变量 和局部变量 的区别在于 二者作用域的不同。
全局变量适用于整个项目,可以被任何函数调用;
局部变量只适用于被创建的函数,只能在函数内部被使用,其他函数无法调用。
下面拿上图创建的两组变量举例:
我们可以看到,全局变量 global_var2 作为全局变量可以在 main函数、func 函数中被调用
结论1:全局变量在整个项目内可以被随意调用。
那么在func 函数之外,func函数内的局部变量是否还可以进行调用呢?(不可以。。。)
我们创建一个新的函数来试验一下,代码如下图所示,在main函数内调用定义在func函数内部的局部变量local_variable.
哪里出问题了呢?
编译器已经标红啦。。。。。。
问题就出在了我们是在“func函数内”进行的声明。因为在func函数内进行声明,那么变量 local_variable就是局部变量,仅仅能在func函数内部使用。
结论2:局部变量只能在被创建的函数内部进行调用,无法被外部函数调用。
六、自动变量和静态变量
自动变量是在函数内部定义的局部变量,当函数调用结束时,自动变量的内存会被释放,前面提到的 a, b, c 就是自动变量;
静态变量是在函数内部定义的局部变量,但使用关键字static(后面会专门出一期关键字合集)修饰,其生命周期会持续到整个程序运行结束。通俗地理解就是,有 static 修饰的局部变量生命周期就变得和全局变量一样。
后面会专门出一期变量和内存。。。
七、常量
C语言中的常量是不可修改的量。整型常量用const int表示,浮点型常量用const float表示,字符型常量用单引号括起来。例如,const int a = 10;表示将整数10赋值给常量a。
(不是很重要,了解即可)
八、其他类型的变量
指针变量:指针变量用于存储另一个变量的内存地址。声明指针变量时,需要在类型前加上星号(*)。例如,声明一个整数指针可以使用int *p。
数组变量:数组是一种连续的内存空间,用于存储相同类型的数据。声明数组时,需要指定数组的类型、名称和大小。例如,声明一个整数数组可以使用int arr[10]。
枚举变量:枚举是一种特殊的数据类型,用于表示一组固定的值。声明枚举变量时,需要使用关键字enum。例如,声明一个颜色枚举可以使用enum Color {RED, GREEN, BLUE}。
九、类型转换
C语言允许在不同类型之间进行转换,但需要注意转换过程中可能丢失精度或导致溢出。常用的类型转换有强制类型转换(如(int)a.b;)和隐式类型转换(如将浮点数赋值给整数)。
这个要后面讲一点内存才好理解,后面还会详细说哒!