使用变量的一般注意事项

030 指针学习—指针定义与指针变量 (1)指针指针是一个变量,其值为另一个变量的地址。通过指针,你可以直接访问和操作存储在内存中的数据。地址形象化地称为“指针”。意思是通过它能找到以它为地址的内存单元(如同根据地址2000就能找到变量i的存储单元一样)。(2)存储单元的地址和存储单元的内容程序已定义 了3个整型变量i,j,k,在程序编译时,系统分配地址6422044~6422047为的4个字节给变量 i,6422040~6422043的4个字节给j,6422036~6422039的4个字节给 kint main() 阅读详情

看完代码大全第10章『使用变量的一般事项』,我想根据我们目前最容易遇到的以及对于我们目前最需要重视的方面,提炼出一些书中的精华。在这经典之上再进行浓缩一下。

先说一点知识:

数据认知

要想创建有效数据,那必须先了解所有创建数据的种类。
目前大概有20多个数据类型

有了概念后直接步入正题。

变量定义

坚持一个原则:所有的变量都要声明

变量初始化原则

1.在声明变量的时候初始化

float studentGrades[MAX_STUDENTS]={0.0};

2.在靠近变量第一次使用的位置初始化它

3.综合1和2,理想情况下,在靠近第一次使用变量的位置声明和定义该变量

java
int accountIndex = 0;
// code using accountIndex
...
double total = 0.0;
// code using total
...
boolean done = false;
// code using done
while(!done){
...}

4.恰当的情况下使用final或者const, java 里把变量声明为const,这样可以防止该变量在初始化之后再被赋。
在定义类常量、输入参数以及任何初始化后其值不再发生改变的局部变量时非常有用

5.在类的构造函数里初始化该类的数据成员

6.利用编译器的警告的信息,很多编译器会在你使用了未经初始化的变量的时候发出警告。

7.检测输入参数的合法性

作用域

总的说:变量的作用域越大,这个变量越不稳定,越危险。
建议:
1. 使变量引用局部化
2. 尽可能的缩短变量的存活时间
减小作用域的一般原则

  • 在循环开始之前再去初始化该循环里使用的变量,而不是在该循环所属的子程序的开始处初始化这些变量。
  • 直到变量即将被使用时再为其赋值。
  • 把相关语句组提取成单独的子程序。
  • 以上总结就是一句话:尽量使变量局部化。
持续性

首先解释一下名词,通俗点就是生命周期,变量的寿命

举个例子:在Java里,用new创建的变量会一直持续到它成为垃圾被回收为止。
如何处理难以预料的变量的寿命,比如寿命到了,你却还以为它还可以使用
几点建议;

  1. 准备抛弃变量时给它们赋上不合理的数值,例如, 你可以在删除一个指针后把它的值设为null.
  2. 在程序中加入调试代码来检测那些关键变量的合理取值。
绑定时间

解释:把变量和它的值绑定在一起的时间

建议:
采用越晚的绑定时间会越有利,绑定时间越早灵活性越差

Java示例:在编码时绑定其值的变量 
titleBar.color = 0xFF; 

这种硬编码方式的绑定就很糟糕,因为一旦要修改这个0xFF,那么这个新值就无法同代码中那些必须要和它一样的0xFF保持一致了

举个绑定靠后的例子:

Java示例:在编译时绑定其值的变量
private static final int COLOR_BLUE = 0xFF;
private static final int TITLE_BAR_COLOR =COLOR_BLUE;
...
titleBar.color = TITLE_BAR_COLOR;

TITLE_BAR_COLOR是一个具名常量,编译器会在编译的时候把它替换为一个数值,这种方法总是好于硬编码,也增加了可读性。

下面举个晚期绑定的例子

Java示例:在运行时绑定其值的变量
titleBar.color = ReadTitleBarColor();

ReadTitleBarColor()是一个能在程序运行期间读入数值的子程序,与上面相比,更具可读性和灵活性,无须通过修改程序来改变titleBar.color,只需要简单修改ReadTitleBarColor()子程序要读取的数据源内容即可。
为变量指定单一用途

1.每个变量只用于单一用途。

2.避免让代码具有隐含含义。

这个要说一下,这种滥用在技术领域被称为混合耦合,啥意识呢?简单点说:就是你定义的变量用于两种以上的用途,那也就意味着其类型对于其中的任何以一项用途而言都是错误的。

3.确保使用了所有已声明的变量,不用放在那里会很容易出事的(笑哭)

嗯~最后我觉得掌握了这些,那么对变量的使用会更加的得心应手

写于:2017年2月12日16:34:15

DEM边界数值爆炸?用ArcGIS空间分析工具链搞定异常值过滤全流程 本文针对DEM数据处理中常见的边界数值爆炸问题,提供了一套完整的ArcGIS空间分析解决方案。文章深入剖析了异常值产生的根源,并详细介绍了从诊断、定位到使用栅格计算器、重分类等工具进行精准过滤与修复的全流程工作流,帮助用户彻底解决由插值误差、数据拼接及坐标系转换引发的数值异常。 阅读详情

相关推荐

WVP+ZLM国标平台实战:从设备注册失败到视频播放黑屏,我遇到的5个典型问题与解法

部署WVP+ZLM国标视频平台时,设备注册失败、视频播放黑屏等问题常常让运维人员头疼不已。本文将基于真实运维场景,剖析五个最具代表性的故障案例,提供从网络配置到版本兼容性的全链路解决方案。

weixin_33178839的博客 362

数据库系统原理第五章

第五章 数据库编程 **大家想一起学习交流的可以加群,WX:MrCroods。** 第一节 存储过程 一、存储过程的基本概念 (1)、存储过程是一组SQL语句集,可以由声明式的SQL语句和过程式SQL语句组成。 (2)、存储过程的优点: 1、可增强SQL语言的功能和灵活性 2、良好的封装性(可被重复调用,且不影响其他的应用程序。) 3、高性能(存储过程执行一次后,其执行规划就驻留在高速缓冲存...

成长、蜕变 918

银河麒麟服务器操作系统V10SP2实战:基于vsftpd构建多角色精细化权限FTP服务

本文详细介绍了在银河麒麟服务器操作系统V10SP2上基于vsftpd构建多角色精细化权限FTP服务的实战指南。从环境准备、核心配置到多角色用户权限管理,全面解析了FTP服务的部署与优化技巧,特别针对企业级应用场景提供了安全加固和故障排查方案。

weixin_30312563的博客 358

P84 会话用户变量与局部变量的

2.用户变量 /* ①用户变量: 会话用户变量 vs 局部变量 ②会话用户变量:使用"@"开头,作用域为当前会话 ③局部变量:只能使用在存储过程和存储函数中的 */ 2.1会话用户变量 #1.6会话用户变量 /* ①变量的声明和赋值 #方式1:“=”或“:=” SET @用户变量 = 值; SET @用户变量 := 值; #方式2:“:=” 或 INTO关键字 SELECT @用户变量 := 表达式 [FROM 等子句]; SELECT 表达式 INTO @用户变量 [FROM 等子句]; ②使

weixin_54671087的博客 223

[RK3588从入门到精通] 专栏目录及介绍

[RK3588从入门到精通] 专栏目录及介绍

nb124667390的博客 6500

脱壳--02.exe

程序开始 使用OD打开程序 发现无法利用esp定律 程序直接运行 查找模块间调用 随便找到一个函数的调用 发现是FF15方式调用 所以是vs的程序 vs程序大致分成两种 vs20xx (特征函数:GetSystemTimeAsFileTime)和 vc++6.0(特征函数:GetVersion) 通过链接器版本 发现是vc6.0 直接在GetVersion上下断点 重新运行程序 断点断下 返回到调用处 vc6.0和易语言的第一个CALL都是GetVers...

weixin_45012273的博客 1112

变量声明和变量使用的注意事项

《零基础学 JavaScript》+《JavaScript 权威指南》(第6版) 一、变量声明的注意事项   1. 重复的声明   2. 遗漏的声明   3. 作为属性的变量 二、变量使用的注意事项   1. 变量作用域   2. 函数作用域和声明提前   3. 作用域链 一、变量声明的注意事项 1. 重复的声明   使用 var 重复声明变量是合法且无害的。如果重复声明带有初始化器(即声明且赋...

qq_43811093的博客 4632

OpenCode:开源代码智能代理平台的全面解析

OpenCode是一个开源代码智能代理平台,采用模块化微服务架构,支持多种AI模型集成。该系统包含前端交互层、代理服务层和模型集成层,提供Build、Plan和General三种代理模式,分别负责代码编写、分析和复杂任务处理。OpenCode支持跨平台安装,具备权限验证、上下文感知等安全机制,并集成LSP协议实现深度代码理解。相比竞品,其开源特性、终端优先设计和提供商无关架构具有明显优势,适用于个人开发、团队协作等多种场景,为开发者提供强大的AI辅助编程能力。

Aaron_945的博客 1424

C语言中各变量声明及注意事项

在C语言中,变量的声明语句用于告诉编译器该变量的类型、名称以及存储类型等信息。

weixin_44205236的博客 3178

2026.5.3:Ubuntu26.04下uv所需的环境变量pyproject.toml

本文档提供了Python开发环境的配置指南。主要包括: 设置环境变量(HF_ENDPOINT、UV_PYTHON_INSTALL_MIRROR等) 创建pyproject.toml配置文件,定义项目元数据(名称、版本等) 指定依赖项(torch系列库)及其安装源(PyTorch官方CUDA 12.8镜像) 配置Python版本要求(>=3.13,<3.14) 设置平台限制(Linux/Windows) 该配置适用于需要PyTorch CUDA 12.8支持的项目开发环境搭建。

拥抱具身智能,昇腾Ascend C 593

高云FPGA系列教程(7):ARM GPIO外部中断

高云GN1NSR-4C共有16个GPIO,每个GPIO可配置成输入或输出模式,支持中断输入,触发方式可选择:上升沿、下降沿、高电平、低电平触发。中断优先级可通过NVIC进行设置,支持 0-7 级可编程中断优先级。

whik1194的博客 1376

Go 语言变量

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。

zhangfang68的博客 2210

【DeepSeek R1构建本地RAG知识库】数据结构化清洗-知识图谱制作、使用、dify集成

本文探讨了在构建本地RAG(Retrieval-Augmented Generation)系统时,如何通过引入知识图谱来增强系统的知识理解能力。传统的向量数据库和嵌入模型虽然能处理语义匹配,但无法有效捕捉知识间的关联性。知识图谱通过“实体-关系-属性”的结构化表示,能够更好地支持推理、推荐和多跳问答等高级功能。文章详细介绍了知识图谱的基本概念、制作思路,以及如何使用Neo4j图数据库进行知识图谱的构建和查询。通过实例展示了从PDF文件解析到知识图谱入库的全过程,强调了知识图谱在提升RAG系统性能中的重要作用

少说,多做 565

【学习记录】makefile学习记录之四:书写命令、使用变量和条件判断

makefile中对命令的识别非常简单,只需要在一行中以tab键开头的都算命令。另外,跟在规则冒号后面同一行的内容也会被视作命令。make的命令默认是/bin/sh中UNIX的标准Shell解释执行的,但也可以手动指明别的shell解释执行。makefile中的行注释符号是井号“#”。

qq_41710502的博客 310

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Go笔记-变量

声明变量的一般形式: var indentifier type 实例: var a int var b bool var str string var ( a int b bool str string ) 当一个变量被声明之后,系统自动赋予它该类型...

weixin_30588729的博客 67

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Rust 学习笔记 3:一般性编程概念

rust

JiMoKuangXiangQu的专栏 1490

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JS变量和字面量

字面量是在源代码中一个固定值的表示法,通俗来说,字面量一些不可更改的, 比如:1 2 3 4 .....,字面量都是可以直接使用的,但是我们一般都不会直接使用字面量。

weixin_71865214的博客 370

C++中一般引用作形参和常引用作形参的问题

#include<iostream> using namespace std; int f(const int &a){return a;} int g(int &a){return a;} int h(int a){return a;} int main(){ int x=3; cout<<f(x)<<endl; cou...

icat的博客 963

C语言指针 指针 基础知识 指针变量(二)

C语言指针 指针 指针变量基础知识(二) 详细讲解C语言指针变量,不懂的可以进来瞅一瞅

weixin_63938270的博客 2142

获取类中的私有变量

获取类中的私有变量https://www.404bugs.com/details/1079066590317432832

赣州博讯科技工作室的博客 83

shell脚本解析2----变量

一、一般变量 #/bin/sh num=2 echo "this is the ${num}nd" #shell脚本语言的变量如果紧连字母时,需要加上“{}”进行区分。 输出结果: 二、系统变量 $#:传入脚本的命令行参数个数 $*:所有命令行参数值,在各个参数值之间留有空格 $0:命令本身(shell文件名) $1:第一个命令行参数 $2:第二个命令行参数 例如...

weixin_30767921的博客 124

Java基础.变量、常量、作用域

666666666666666666666666666666666666666

panz0_0的博客 144

python乘法模板_Python基础之变量和变量实现的简单乘法运算

上篇我们知道了关于python的一个hello world的简单程序代码,现在我们来了解关于python里面的变量,我们来了解下,变量是什么?变量:变量是为了存储程序运算过程中的一些中间结果,为了方便之后的调用,同一变量可以重新赋值。变量的特点:具有描述性的标记,存储在内存里。我们来看个列子,简单了解变量乘法运算:x = 3y = 9z = x * yprint("3*9=",z)print("z...

weixin_39991148的博客 99

变量及使用注意事项

变量: 程序运行期间,内容可以发生改变的量。 创建一个变量并使用的格式: 数据类型 变量名称;// 创建了一个变量 变量名称 = 数据值;// 赋值,将右边的数据值赋值给左边的变量 一步到位的格式: 数据类型 变量名称 = 数据值;//在创建一个变量的同时,立刻放入指定的数据值 注意事项: 1.如果创建多个变量,那么变量之间的名称不可以重复。 2.对于float和long类型来说,字母后缀F和L不要丢掉。 3.如果使用byte或者short类型的变量,那么右侧的数据值不能超过左侧类型的范围。 4.没

qq_40637475的博客 476

使用变量_变量柱塞泵使用注意事项

点击蓝字关注我哦PD10V、PD11V系列变量柱塞泵使用注意事项及常见故障01使用产品明细 序号 型号 1PD11VO75-POPRU2-10R-NDD12T02 2PD11VO130C-POPRU2-10R-NDD12T02 3PD11VO192C-POPRU2-10R-NDD12...

weixin_33045071的博客 1006

使用变量的注意事项

使用变量的注意事项 在使用变量的时候,需要注意以下几点: 1. 变量的优先级 如果在函数体内定义了一个与全局变量名相同的局部变量,那么在该函数体内全局变量将失效(相当于不存在),请看下列代码。 var x = "这是一个全局变量"; function writeText(){ var x = "这是一个局部变量"; console.log(x); } writeText(); //...

Autism_er的博客 681
上一篇: 文本溢出边界显示为省略号
下一篇: 基本数据类型
杨不败
博客等级 码龄10年 46粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值