👉 ✈手机屏幕横着看更精彩 *_*. . . . . . 大 江 东 去,浪 淘 尽, 千 古 风 流 人 物。 故 垒 西 边, 人 道 是, 三 国 周 郎 赤 壁。 乱 石 穿 空, 惊 涛 拍 岸, 卷 起 千 堆 雪。 江 山 如 画, 一 时 多 少 豪 杰。 遥 想 公 瑾 当 年, 小 乔 初 嫁 了, 雄 姿 英 发。 羽 扇 纶 巾, 谈 笑 间, 樯 橹 灰 飞 烟 灭。 故 国 神 游, 多 情 应 笑 我, 早 生 华 发。 人 生 如 梦, 一 尊 还 酹 江 月。 (。_°)☆\(- – ) 👈

LR静态存储/动态存储/指针变量脚本说明

在一次教程学习中,看到该知识点并记录了下来,希望与大家共同探讨学习。

一、静态存储与动态存储

  静态存储变量通常是在变量定义时就分定存储单元并一直保持不变, 直至整个程序结束。动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放。动态存储变量最典型的例子是函教的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配,调用函数完毕立即释放,如果一个函数被多次调用 ,则反复地分配和释放形参变量的存储单元。

  从以上分析可知,静态存储变量是一直存在的 ,而动态存储变是则时而存在时而消失。 我们又把这种由于变量存储方式不同而产生的特性称变量的生存期。( 见以下脚本 )

 1 Action()
 2 {
 3 
 4     int i;
 5 
 6        //执行函数auto_static 5次
 7     for (i=0;i<5;i++) {
 8         auto_static();
 9     }
10 
11 
12     return 0;
13 }
14 
15 
16 //静态动态变量测试函数
17     void auto_static(void)
18     {
19         int var_auto=0;          //动态变量,每次调用都重新初始化
20         static int var_static=0; //静态局部变量:只初始化1次        
21         lr_output_message("var_auto=%d,var_static=%d\n",var_auto,var_static); //输出两个变量的值
22         var_auto++;
23         var_static++;
24     }

大家可以想想,两个变量输出的都是什么值:

1 Action.c(38): var_auto=0,var_static=0
2 Action.c(38): var_auto=0,var_static=1
3 Action.c(38): var_auto=0,var_static=2
4 Action.c(38): var_auto=0,var_static=3
5 Action.c(38): var_auto=0,var_static=4
View Code

 

二、指针

  指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、 long 和double。

  根据出现的位置不同,操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值。当用在声明一个变量时,表示这里声明了一个指针。其它情况用到 * 表示指针的歌值。

  & 是地址操作符,用来引用一个内存地址。通过在变量名字前使用&操作符,我们可以得到该变量量的内存地址。(见以下解本)

 1 Action()
 2 {
 3 
 4 //将var1值赋给变量deref
 5     int *ptr;      //生命一个int类型的指针变量
 6     int deref;
 7     int var1 = 35; //定义变量并复制,此时会分配存储单位,有存储地址
 8     int var = 99;
 9 
10     ptr = &var;    //ptr指向变量var的内存地址,但不可以把数值赋给指针变量
11     deref = *ptr;  //对指针进行取值,打印存储在指针地址中的内容
12     lr_output_message("var is %d",deref);
13 
14 
15     return 0;
16 }

输出的值为: var is 99

posted @ 2019-12-16 08:31  S-Gavin  阅读(695)  评论(0编辑  收藏  举报