码迷,mamicode.com
首页 > 其他好文 > 详细

动态变量和静态变量

时间:2019-09-21 12:23:23      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:auto   静态   存储类别   活动   int   family   str   gis   初始化   

C语言中提供了存储说明符auto,register,extern,static说明的四种存储类别。

四种存储类别说明符有两种存储期:自动存储期和静态存储期。其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块是被建立,它在该程序块活动时存在,退出该程序块时撤销。在函数内部定义的变量成为局部变量。

在某些C语言教材中,局部变量称为自动变量,这就与使用可选关键字a u t o定义局部变量这一作法保持一致。局部变量仅由其被定义的模块内部的语句所访问。换言之,局部变量在自己的代码模块之外是不可知的。

对于局部变量,要了解的最重要的东西是:它们仅存在于被定义的当前执行代码块中,即局部变量在进入模块时生成,在退出模块时消亡。定义局部变量的最常见的代码块是函数。

 

static 是定义静态变量用的,在程序执行中他只会被初始化一次。

 

比如程序运行过程中a的值被改变后,又执行到static int a=1,这句,此时这句将不会被执行,a不会第二次被初始化。

 

如果是动态变量,int a=1,此时a便会被重新赋值为1

int *p  :一级指针,表示p所指向的地址里面存放的是一个int类型的值
int **p :二级指针,表示p所指向的地址里面存放的是一个指向int类型的指针(即p指向的地址里面存放的是一个指向int的一级指针)
例如:
int i=10;         //定义了一个整型变量
int *p=&i;      //定义了一个指针指向这个变量
int **p1=&p; //定义了一个二级指针指向p指针
那么取出10的值方式为:
printf(“i=[%d]\n”,*p);
printf(“i=[%d]\n”,**p1);

 

动态变量和静态变量

标签:auto   静态   存储类别   活动   int   family   str   gis   初始化   

原文地址:https://www.cnblogs.com/iBoundary/p/11562068.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!