CC变量总结

                                                                                            CC变量

                                                                                         2020--09--29

//--变量--可写--:数值可发生改变可被覆盖
//变量一般有4个属性:可写/代号/地址/本身值

    char a = 'a';
    int b = 3;
    float c = 3.141592653;
    //一、字符,整型,浮点型变量
    //二、指针变量
    //三、数组变量
    //四、结构体变量

    //五、函数变量

1. 按作用范围

局部变量与全局变量。
局部变量:在函数内部(包括形参)定义,只在所定义的函数内部或者局部复合语句中有效。
全局变量:在函数外部定义,作用范围为从定义位置开始到所在源文件结束位置。习惯上,全局变量首字母常为大写。

#include<stdio.h>
int Max, Min;          //全局变量

void fun1(){
   int x , arr[10];    //局部变量
   ...
}

int A = 4, B = 5;    //全局变量,作用范围为从当前位置到源文件结束处。

void fun2(int a){
...
}

注:函数内部的局部变量若和全局变量同名,全局变量会被局部变量“屏蔽”。

全局变量作用范围的扩展 — extern
如上面代码块中的全局变量A,B, 函数fun1内部无法引用它,因为A,B是在fun1之后定义的,为了将A,B的适用范围扩展到fun1中,可以在fun1内部用extern进行申明。

#include<stdio.h>
int Max, Min;          //全局变量

void fun1(){
   int x , arr[10];    //局部变量
   extern int A, B;  //类型int可省   <=> extern A, B;   
   printf("%d, %d", A, B);
   ...
}

int A = 4, B = 5;     //全局变量,作用范围为从当前位置到源文件结束处。

void fun2(int a){
...
}

extern也可以将全局变量的作用范围扩展到其他源文件中,只需要在其他文件中使用extern申明即可(文件放在同一路径下)。
若限值本源文件中的外部变量(全局变量)被其他文件引用,可以在定义时用static申明,即使该外部变量只能为本文件所用。

file1.c
static int A;
....

file2.c 
extern int A;   //无法引用file1中的变量A;
...

2. 按存储类别

动态存储和静态存储。
动态存储

在程序运行期间随着函数的调用和返回,根据需要动态分配(释放)内存。

比如,函数形参,函数内的自动变量(局部变量),函数调用时的现场保护和返回地址。


静态存储:在程序运行期间由系统分配固定的存储单元,在程序结束后才会释放。比如,全局变量,static声明的局部变量。

2.1 动态存储类别

  • auto 变量
void fun(){
 auto int a , b = 3;
 //  <=>
 int a, b = 3;    //auto可省
}

自动变量在函数调用时赋初值。

2.2 静态存储类别

  • 全局变量
  • static声明的局部变量
void fun(){
 static int a  = 3;    //函数调用结束不会释放a的内存,可将上次调用后a的值运用到下次调用。
}

静态局部变量在编译时赋初值,且不可被其他函数所引用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值