嵌入式学习之路(十四)——C语言学习(9)

嵌入式学习之路(十四)——C语言学习(9)
下面我们来提一下变量,变量的重要特征:生命周期和作用域.根据变量的作用域可以把变量分为3组,分别为全局变量,局部变量和块变量,
声明在函数外边的变量叫做全局变量,没有初始化的全局变量都自动初始化为0
声明在函数内部的变量叫做局部变量,没有初始化的局部变量的结果不确定
声明在语句括号里的变量叫做块变量。
不同类型的变量可以重名,重名变量的使用遵循就近规则。
我们可以做个题目
int x = 1;
int main()
{
    printf("x = %d\n",x);
    int x= x;
    printf("x = %d\n",x);
}
大家知道这个结果是什么呢?大家可以先试试哦
接下来我分析一下:
首先我们定义了一个全局变量x,然后又在主函数里面定义了一个局部变量x = x
这句话我们应该这样理解:int x ; x = x;这样我们就知道,主函数里面定义的布局变量和全局变量没有关系,所以,第一输出x = 1;第二个输出是一个不确定的数,很好体现了变量的重名。大家可以好好理解
下面我们来讲讲static修饰的变量,今天就先粗略的讲一下,后面我们将详细介绍
同样地我们来看一个程序
  1 #include <stdio.h>
  2
  3 void sum()
  4 {
  5     static num ;
  6     num ++;
  7     printf("num = %d\n",num);
  8 }   
  9 int main(int argc,char *argv[])
 10 {
 11     sum();
 12     sum();
 13     sum();
 14     sum();
 15     return 0;
 16 }
我们可以看看输出结果是什么?
xuxb@xuxb-K42JZ:~/csdn/biaoc/day14$ ./static
num = 1
num = 2
num = 3
num = 4
根据我们前面的介绍,局部变量num应该会被收回的,就是说num应该都是不确定的才对,为什么呢?
我来为大家解释下:首先用static修饰的局部变量存在静态数据区,和全局变量一样,所以他初始为0
然后呢?static他只定义一次,之后就一直执行num++,所以我们看到的结果是1,2,3,4哦
这个题目笔试很有可能考到哦
今天就先到这里吧,想到再补充吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值