博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
变量定义和声明的差别(整理)
阅读量:4603 次
发布时间:2019-06-09

本文共 973 字,大约阅读时间需要 3 分钟。

变量的声明有两种情况:

1、一种是须要建立存储空间的。比如:int a 在声明的时候就已经建立了存储空间。

2、还有一种是不须要建立存储空间的。 比如:extern int a 当中变量a是在别的文件里定义的。

声明是向编译器介绍名字--标识符。它告诉编译器“这个函数或变量在某处可找到,它的模样象什么”。

而定义是说:“在这里建立变量”或“在这里建立函数”。它为名字分配存储空间。不管定义的是函数还是变量,编译器都要为它们在定义点分配存储空间。对于变量,编译器确定变量的大小,然后在内存中开辟空间来保存其数据,对于函数,编译器会生成代码,这些代码终于也要占用一定的内存。

总之就是:把建立空间的声明成为“定义”,把不须要建立存储空间的成为“声明”。

基本类型变量的声明和定义(初始化)是同一时候产生的;而对于对象来说,声明和定义是分开的。

比如:类A

假设A a;就是一个声明,告诉编译器a是A类的一个对象变量,可是不进行初始化;

假设以后a=new A();这就是初始化,分配了空间。

(我们声明的终于目的是为了提前使用,即在定义之前使用,假设不须要提前使用就没有单独声明的必要,变量是如此,函数也是如此,所以声明不会分配存储空间,仅仅有定义时才会分配存储空间。)

用static来声明一个变量的作用有二:

(1)对于局部变量用static声明,则是为该变量分配的空间在整个程序的运行期内都始终存在。

(2)外部变量用static来声明,则该变量的作用仅仅限于本文件模块。

 

补充:

什么是定义?什么是声明?它们之间的差别是什么?

所谓定义就是(编译器)创建一个对象,为这个对象分配一块内存,并给它取上一个名字,这个名字就是就是我们常常所说的变量名或对象名。

声明有2重含义:

(1) 告诉编译器,这个名字已经匹配到一块内存上,以下的代码用到变量或者对象是在别的地方定义的。声明能够出现多次。

(2) 告诉编译器,这个名字已经被预定了,别的地方再也不能用它来作为变量名或对象名。

定义和声明的最重要差别就是:

定义创建对象并为这个对象分配了内存,声明没有分配内存。

參考文献:

《C语言深度解剖》  北京航空航天大学出版社   陈正冲    P2-P3

转载于:https://www.cnblogs.com/bhlsheji/p/4344148.html

你可能感兴趣的文章
织梦自动增加数值标签
查看>>
DPDK初始化
查看>>
iOS消息推送代码(iOS不断更新,稍微有点过时了)
查看>>
DP---最长上升/下降子序列
查看>>
MySQL性能诊断分析
查看>>
python list用法
查看>>
Linux系统磁盘管理
查看>>
1037 在霍格沃茨找零钱 (20 分)
查看>>
记一次header跨域与cookie共享
查看>>
根据屏幕高度自适应元素高度
查看>>
jQuery CSS 操作函数
查看>>
java配置环境变量
查看>>
TexturePacker 命令行用例
查看>>
list-style-type:decimal在IE中显示全是1的解析
查看>>
js保留整数
查看>>
.Net托管世界的应用程序域和线程-网摘
查看>>
大规模web服务读书笔记
查看>>
bzoj1112 [POI2008]砖块Klo
查看>>
解决form提交时又弹出页面的问题
查看>>
tmux 基础教程
查看>>