C语言中,定义的含义?声明的含义?它们之间的区别是什么?
在C语言中,对于定义和声明,也许我们非常的熟悉,但不一定真正的了解!
定义的含义:所谓定义,就是创建(编译器)一个对象,为这个对象分配一块内存空间并取名,也就是我们平常所说的变量名或对象名,一旦这个名字和这块内存空间匹配,那么在定义的这个对象或变量的生命周期中,所创建的这个变量名将不能再被改变,并且内存空间的位置也不会改变。在一个区域内(函数内,全局),一个名字只能被定义一次,不能重复定义。
声明的含义:声明有两重含义
第一重含义:告诉编译器,这个名字已经匹配到了一块内存空间上,后面的代码所用到的这个变量或对象都是在别的地方定义过的。
eg:extern int i:
第二重含义:告诉编译器,这个名字我已经预定了,例如最熟悉的函数声明:void fun(int i,char c);在最开始声明,就是表示告诉编译器,这个名字已经被预定,后面的代码中其他变量或对象将不能再使用这个名字,声明可以多次重复。
定义和声明的主要区别:
定义创建了对象并分配内存空间,而声明不分配内存空间。
-------总结自《C语言深度解析》
C语言中,定义的含义?声明的含义?它们之间的区别是什么?的更多相关文章
- C语言中static修饰符的意义
在C语言中,static通常有2种含义:1)定义变量的生命周期:2)定义变量或者函数的作用域. 变量的生命周期是指,相对于程序运行的进程生命周期,变量存在的时间段.变量的生命周期由变量的存储类型(位置 ...
- C语言中的const,free使用方法具体解释
注意:C语言中的const和C++中的const是有区别的,并且在使用VS编译測试的时候. 假设是C的话.请一定要建立一个后缀为C的文件.不要是CPP的文件. 由于.两个编译器会有区别的. 一.C语言 ...
- C语言中的volatile关键字简介
C语言中的volatile关键字简介: (1)含义: volatile关键字的意思是可能会被外来的意想不到的改变.它的作用是:优化器在使用该关键字定义的变量时,直接从内存中读取原始的数 ...
- C语言中NULL的定义
用C语言编程不能不说指针,说道指针又不能不提NULL,那么NULL究竟是个什么东西呢? C语言中又定义,定义如下: #undef NULL #if defined(__cplusplus) #defi ...
- (七)C语言中的void 和void 指针类型
许多初学者对C中的void 和void 的指针类型不是很了解.因此常常在使用上出现一些错误,本文将告诉大家关于void 和void 指针类型的使用方法及技巧. 1.首先,我们来说说void 的含义: ...
- 在不同语言中static的用法
static (计算机高级语言) 编辑 像在VB,C#,C,C++,Java,PHP中我们可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN.ALGOL.COBOL.BA ...
- C语言中setjmp与longjmp学习笔记
C语言中setjmp与longjmp学习笔记 一.基础介绍 头文件:#include<setjmp.h> 原型: int setjmp(jmp_buf envbuf) ,然而longjm ...
- C语言中static的使用方法【转】
本文转自:http://blog.csdn.net/renren900207/article/details/21609649 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量 ...
- c语言中static 函数和普通函数的区别
C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放 ...
随机推荐
- ocx控件 编译成C#调用的dll 方法 转
打开VS命令提示行 1.注册ActiveX控件(带上 VCbox.ocx的路径) regsvr32 VCbox.ocx 2.编译OCX文件 aximp VCbox.ocx 生成两个dll文件,项 ...
- Oracle监听小问题
啥情况 宁波_弈风 15:17:40 宁波_弈风 15:17:49 默认配置路径 宁波_弈风 15:18:09 宁波_弈风 15:19:13 我原来一直都在SAMPLE文件里面配置和保存,因为 ...
- Huffman编码(测试源代码)
1.此程序为c++程序 2.以下代码可实现手动输入,即去掉代码中的/*...*/注释符,并同时去掉赋值代码段 3.源代码 #include<iostream> using namespac ...
- NueGet设置package Source
package Source为:http://packages.nuget.org/v1/FeedService.svc/ 最新的地址(2015-4-10):https://www.nuget.org ...
- _.属性和self.属性,我遇到的那些坑
只怪当时_.属性和self.属性当时没有研究透,所以为自己掉入坑里埋下了伏笔.下面从我的坑开始说起: 我写了个懒加载,重写了一个数组属性的get方法,在get方法里面创建了一个数组来获取数据,那么调用 ...
- Python为什么要self
Python要self的理由 Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引发). ...
- SDK截图(四):压缩位图实例
这个问题研究了两天.<windows程序设计>中没有给出实例,MSDN也没有给出具体的例子.在知道,CSDN提问后,也没有得到答案.所以决定重新对DIB做一次彻底的研究,这大概会花去我一个 ...
- Intent和IntentFilter详解
Intent用于启动Activity,Service, 以及BroadcastReceiver三种组件, 同时还是组件之间通信的重要媒介. 使用Intent启动组件的优势1, Intent为组件的启动 ...
- tensorflow资料补充(很棒)
http://tensorfly.cn/tfdoc/get_started/introduction.html https://github.com/CreatCodeBuild/TensorFlow ...
- jquery的dom操作
DOM操作 $("p").appendTo("div");把p标签追加到div标签--中--后 $("p").prependTo(" ...