变量的声明有两种情况:

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

2、另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。

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

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

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

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

例如:类A

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

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

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

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

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

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

补充:

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

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

声明有2重含义:

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

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

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

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

参考文献:

http://hi.baidu.com/kingcham/blog/item/71740f12ab31012fdc54015d.html

http://apps.hi.baidu.com/share/detail/20436534

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

变量定义和声明的区别(整理)相关推荐

  1. 变量定义和声明的区别~~~概念上千万不要栽跟头!!!

    变量的声明有两种情况: 1.一种是需要建立存储空间的.例如:int a 在声明的时候就已经建立了存储空间. 2.另一种是不需要建立存储空间的. 例如:extern int a 其中变量a是在别的文件中 ...

  2. c语言变量申明和定义区别,C语言中变量定义与声明的区别

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介 ...

  3. 1、C语言面试笔试---变量定义和声明

    文章目录 1.背景 2.变量定义和声明 1.局部变量和全局变量 2.变量的存储类别 3.例题 4.内存泄漏 1.背景 2019秋招马上开始了,今天已经是7月30号了,赶紧刷刷C语言,争取在8月中旬刷完 ...

  4. 十:变量的定义和声明的区别?

    1. 变量的声明: 声明是用来告诉编译器变量的名称和类型,而不分配内存. 变量的声明有两重含义: 告诉编译器,这个名字已经匹配到一块内存上,下面的代码用到变量或者对象是在别的地方定义的.声明可以出现多 ...

  5. C++ 笔记(05)— 变量(变量定义、声明、初始化、extern关键字、变量之间转换)

    1. 变量定义 变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储.变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示: type variable_list; ...

  6. C语言-定义和声明的区别

    3.定义与声明 定义:在内存中开辟空间(只能有一次),用来保存数据 声明:告知 (可以声明多次) 3.1.什么是变量 在内存中开辟特定大小的空间,用来保存数据 3.2.如何定义变量-怎么用 int x ...

  7. C++/C中定义与声明的区别

    在C++/C中,定义与声明是不一样的,主要区别在于是否分配了内存. 定义:编译器创建一个对象,为该对象分配一块内存,并为该内存起一个名字,这个名字就叫变量名. 例如: int a;//未初始化 int ...

  8. es6中变量/常量的声明以及区别

    var / let /const var声明变量 var存在全局作用域和函数作用域两种,并且有变量提升 let声明变量 const声明常量 let和const对比var声明有以下特性/区别 变量声明不 ...

  9. C语言中变量声明和变量定义的区别

    本文转载至CSDN博客JeanCheng 变量声明和变量定义 变量定义:用于为变量分配存储空间,还可为变量指定初始值.程序中,变量有且仅有一个定义. 变量声明:用于向程序表明变量的类型和名字. 定义也 ...

最新文章

  1. 2021年大数据HBase(十一):Apache Phoenix的视图操作
  2. rabbitmq的整体架构一览
  3. 基于深度学习的目标检测算法:SSD——常见的目标检测算法
  4. 基于python的网站_基于Python的网站爬虫应用研究
  5. “混合”成为IBM Cognos新法宝
  6. Nubiers to follow
  7. Android-Note
  8. python可迭代对象,迭代器,生成器
  9. 华为超大云数据中心落地贵州,这些硬核技术有利支撑“东数西算”
  10. tenda 服务器无法打开网页,Win7系统网页打不开qq能上怎么办? | 192路由网
  11. 最擅长玩《毁灭战士》的AI开源了 | 来自CMU的论文代码
  12. 在matlab中对hsv进行均匀量化和非均匀量化
  13. c语言中文网pdf免费下载,C语言中文网VIP教程11.9.pdf
  14. PHP ASCII 排序方法
  15. Logistic回归分类器
  16. C++ 实现CRC循环冗余校验码
  17. 合宙Air724UG AT指令连接阿里云
  18. word论文排版插件_推荐一款强大的word插件,一键排版,好用到爆!
  19. No way to dispatch this command to Redis Cluster because keys have different slots.
  20. AI为什么救不了“想上天”的猪?

热门文章

  1. HSF 入门-发布和调用hsf服务
  2. 【linux基础-1】linux下的快捷键-根目录结构-用户目录
  3. Linux比较常用的终端快捷键使用
  4. unwinding now org.apache.cxf.interceptor.Fault: Index: 1, Size: 1
  5. \ddd \xhh
  6. ps2键盘测试软件,PS2键盘51测试程序2
  7. 算法——递归与递推[蓝桥杯]
  8. Git常用命令有哪些?
  9. jsp及Servlet经典面试题以及答案
  10. iot架构 mqtt netty_百度IoT:MQTT Broker架构设计