LR静态存储/动态存储/指针变量脚本说明
在一次教程学习中,看到该知识点并记录了下来,希望与大家共同探讨学习。
一、静态存储与动态存储
静态存储变量通常是在变量定义时就分定存储单元并一直保持不变, 直至整个程序结束。动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放。动态存储变量最典型的例子是函教的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配,调用函数完毕立即释放,如果一个函数被多次调用 ,则反复地分配和释放形参变量的存储单元。
从以上分析可知,静态存储变量是一直存在的 ,而动态存储变是则时而存在时而消失。 我们又把这种由于变量存储方式不同而产生的特性称变量的生存期。( 见以下脚本 )
Action()
{ int i; //执行函数auto_static 5次
for (i=;i<;i++) {
auto_static();
} return ;
} //静态动态变量测试函数
void auto_static(void)
{
int var_auto=; //动态变量,每次调用都重新初始化
static int var_static=; //静态局部变量:只初始化1次
lr_output_message("var_auto=%d,var_static=%d\n",var_auto,var_static); //输出两个变量的值
var_auto++;
var_static++;
}
大家可以想想,两个变量输出的都是什么值:
Action.c(): var_auto=,var_static=
Action.c(): var_auto=,var_static=
Action.c(): var_auto=,var_static=
Action.c(): var_auto=,var_static=
Action.c(): var_auto=,var_static=
二、指针
指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、 long 和double。
根据出现的位置不同,操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值。当用在声明一个变量时,表示这里声明了一个指针。其它情况用到 * 表示指针的歌值。
& 是地址操作符,用来引用一个内存地址。通过在变量名字前使用&操作符,我们可以得到该变量量的内存地址。(见以下解本)
Action()
{ //将var1值赋给变量deref
int *ptr; //生命一个int类型的指针变量
int deref;
int var1 = ; //定义变量并复制,此时会分配存储单位,有存储地址
int var = ; ptr = &var; //ptr指向变量var的内存地址,但不可以把数值赋给指针变量
deref = *ptr; //对指针进行取值,打印存储在指针地址中的内容
lr_output_message("var is %d",deref); return ;
}
输出的值为: var is 99
LR静态存储/动态存储/指针变量脚本说明的更多相关文章
- C 静态存储动态存储
首先,我们可以把程序所占的内存空间分为三个部分:(可以根据静态资源区.栈区.堆区来划分) 静态存储:程序运行期间由系统分配固定得到存储空间(栈): 动态存储:开发者根据自身需要进行动态分配的存储空间( ...
- delphi动态数组指针问题
就一个button事件 procedure TForm1.btn7Click(Sender: TObject); Type TMyArr = array of array of array of In ...
- 【转】C中的静态存储区和动态存储区
一.内存基本构成 可编程内存在基本上分为这样的几大部分:静态存储区.堆区和栈区.他们的功能不同,对他们使用方式也就不同. 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个 ...
- C++中的自动存储、静态存储和动态存储
根据用于分配内存的方法,C++中有3中管理数据内存的方式:自动存储.静态存储和动态存储(有时也叫做自由存储空间或堆).在存在是间的长短方面,以这三种方式分配的数据对象各不相同.下面简要介绍这三种类型( ...
- C++静态存储,动态存储
什么是静态存储,动态存储静态存储变量通常是在变量定义时就分定存储单元并一直保持不变, 直至整个程序结束. 动态存储变量是在程序执行过程中,使用它时才分配存储单元, 使用完毕立即释放.典型的例子是函数的 ...
- C++中的数据存储方式自动存储、静态存储和动态存储
C++中变量存储方式有三种,自动存储,静态存储,动态存储 自动存储简单意义上就是在函数内不用任何关键字直接定义的变量,它在函数被调用时被创建,在函数退出时自动消失, 静态存储顾名思义就是在程序的整个运 ...
- [C++]变量存储类别,指针和引用,类与对象,继承与派生的一些摘要
C++中共有四种存储类别标识符:auto/static/register/extern 1.auto 函数或分程序内定义的变量(包括形参)可以定义为auto(自动变量).如果不指定存储类别,则隐式定义 ...
- C++动态存储方式与静态存储方式
如果从变量值存在的时间(即生存期)来分,可将程序中的变量分为:动态存储方式和静态存储方式.它们所占用的存储空间区域不同. C++存储空间区域 代码区:存放可执行程序的程序代码.静态存储区:存放静态变量 ...
- 【Xcode学C-4】进制知识、位运算符、变量存储细节以及指针的知识点介绍
一.进制知识 (1)默认是十进制.八进制前面加0.即int num1=015;是13.十六进制前面加0x/0X.即int num1=0xd.结果是13.二进制前面是0b/0B,即int num1=0b ...
随机推荐
- MySql: AUTO_INCREMENT
首先要在Column使用AUTO_INCREMENT (每张表只有一个列可以AUTO_INCREMENT): 以下示例取自MySql官网(http://dev.mysql.com/doc/refman ...
- thinkphp5配合datatable插件分页后端处理程序
thinkphp5配合datatable插件分页后端处理程序第一版DataTable.php v.1.0 <?php use think\Db; /** * DataTable.php. */ ...
- thinkphp 5.1 去掉 .html 后缀
thinkphp 5.1 去掉 .html 后缀
- 【Java】抽象类和接口详解
抽象类 一.抽象类的概述 现在请思考一个问题:假如我现在又Dog.Cat.Pig等实例对象,现在我们把它们都抽象成一个Animal类,这个类应该包含了这些Dog.Cat.Pig等实例对象eat的功能, ...
- 手摸手带你认识https涉及的知识,并实现https加密解密,加签解签
目录 http访问流程 https访问流程 证书 加密/解密 加签/验签 Java实现https 拓展 @ 看完整的代码,直接去完整代码实现,看实现完后会遇到的坑,直接去测试过程中的问题,包括经过代理 ...
- 你必须知道的容器日志 (1) Docker logs & logging driver
本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章.监控和日志历来都是系统稳定运行和问题排查的关键,在微服务架构中,数量众多的容器以 ...
- 使用图数据库 Nebula Graph 数据导入快速体验知识图谱 OwnThink
前言 本文由 Nebula Graph 实习生@王杰贡献. 最近 @Yener 开源了史上最大规模的中文知识图谱--OwnThink(链接:https://github.com/ownthink/Kn ...
- 关于C# 语言
C# 语法高度重视表达,但学习起来也很简单轻松. 任何熟悉 C.C++ 或 Java 的人都可以立即认出 C# 的大括号语法. 通常情况下,了解上述任何一种语言的开发者可以在很短的时间内就开始使用 C ...
- 【NHOI2018】衰减
[解题思路] 显然这题并不难,由于数据范围较小,完全可以用DFS解决. 从原数开始每次变异的图谱,每次记录住当前的路径. 当找到1时就可以输出并回溯了. 小技巧:printf和scanf可以提高输出输 ...
- 自学python day 10 函数的动态参数、命名空间、作用域
作业提升: s为字符串 s.isalnum() 所有字符都是字母或者数字 s.isalpha() 所有字符都是字母 s.isdigit() 所有字符否是数字 2. for i in range(1,1 ...