社区
C++ 语言
帖子详情
问:声明和定义的区别
wangsiyuanoo
2008-07-03 02:09:14
对于声明和定义,我还是有点糊涂
我以前就认为,没有初始化的变量就是声明,只有被初始化了的才是定义。
可今天看到的内容却说:int ia;是一个定义。
我知道
定义包括声明,可为什么不说int ia;是一个声明呢?
声明和定义的区别除了“声明可以多次,而定义只能一次”外,还有什么区别呢????
...全文
244
28
打赏
收藏
问:声明和定义的区别
对于声明和定义,我还是有点糊涂 我以前就认为,没有初始化的变量就是声明,只有被初始化了的才是定义。 可今天看到的内容却说:int ia;是一个定义。 我知道 定义包括声明,可为什么不说int ia;是一个声明呢? 声明和定义的区别除了“声明可以多次,而定义只能一次”外,还有什么区别呢????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
28 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
TruthS
2008-07-07
打赏
举报
回复
声明只是说明这个东西存在,并没有分配内存,而定义是要分配内存的
wangboqun99
2008-07-07
打赏
举报
回复
UP
littlebad_boy
2008-07-06
打赏
举报
回复
mark
two_ears
2008-07-06
打赏
举报
回复
“没有初始化的变量就是声明,只有被初始化了的才是定义”
这句话对于extern是对的
extern int c=0;是定义
extern int c;是声明(一般写在包含文件里)
hagangqiou
2008-07-06
打赏
举报
回复
可以试着这样理解:
定义是第一次"声明";声明依赖于定义.
对于函数,定义给出严格的内容.而声明给出函数的原型如:函数名\返回值\参数类型等.也就是说声明是定义的描述.
定义具有唯一性,函数不能被定义多次;而声明就可以.需要用到的地方都应该声明.
自定义函数如果没有定义,那么就不能被调用.
头文件其实也起到声明的作用,对于没有给出头文件的外函数和变量,调用就会报错,充分说明了这一点.
bhzdw
2008-07-05
打赏
举报
回复
分配空间就算定义了
Otcthirteen
2008-07-05
打赏
举报
回复
声明变量不分配内存,而定义则分配了内存。
waterxx01
2008-07-05
打赏
举报
回复
[Quote=引用 7 楼 k2eats 的回复:]
主要是 定义意味着分配了内存空间, 声明没有
[/Quote]
zhangjundriver
2008-07-05
打赏
举报
回复
这两个概念不是很清楚啊,学习了,多谢
帅得不敢出门
2008-07-05
打赏
举报
回复
声明不对其编址
定义对其编址
annvily
2008-07-05
打赏
举报
回复
定义算一个声明
而声明不一定是定义
同一范围内
声明可以很多
但定义只能有一个
EddyCoffee
2008-07-05
打赏
举报
回复
学习了
macfan
2008-07-04
打赏
举报
回复
[Quote=引用楼主 wangsiyuanoo 的帖子:]
可今天看到的内容却说:int ia;是一个定义。
我知道
定义包括声明,可为什么不说int ia;是一个声明呢?
[/Quote]
在int ia;了以后系统已经为变量分配空间了,而声明只是告诉编译器代码中的某些函数变量是干什么用的,遇到了不要意外的报错.
windsting
2008-07-04
打赏
举报
回复
简单地说,就是:
定义分配了空间,声明不会分配空间。
jinwei1984
2008-07-03
打赏
举报
回复
[Quote=引用 7 楼 k2eats 的回复:]
主要是 定义意味着分配了内存空间, 声明没有
[/Quote]
XiaoG602
2008-07-03
打赏
举报
回复
比较通俗一点的说法是:声明是告诉编译器有这个东西,定义是告诉编译器这是什么东西。
Gob00st
2008-07-03
打赏
举报
回复
答案是这个
[Quote=引用 7 楼 k2eats 的回复:]
主要是 定义意味着分配了内存空间, 声明没有
[/Quote]
mymtom
2008-07-03
打赏
举报
回复
[Quote=引用 7 楼 k2eats 的回复:]
主要是 定义意味着分配了内存空间, 声明没有
[/Quote]
wangdeqie
2008-07-03
打赏
举报
回复
学习下
zsxcn
2008-07-03
打赏
举报
回复
mark
加载更多回复(8)
C++中
声明
和
定义
的
区别
CSDN里用人
问
: 我一直以为
定义
=
声明
+初始化,即int i;是
声明
,int i =0;是
定义
。 但看侯捷翻译的Effective C++上面说string ps;也是个
定义
(在条款
定义
应该尽量靠后的那节),如果
定义
过早,就会过早引入构造的负担。 难道我对
声明
和
定义
的概念一直有错吗
声明
不导致内存分配,那么到底如何区分
定义
和
声明
? 我在楼下回帖里挑选了几个比较靠谱的答案
声明
和
定义
的
区别
C++primer的解释是这样的: 变量的
定义
(definition):用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个
定义
; 变量的
声明
(declaration):用于向程序表明变量的类型和名字。
定义
也是
声明
:当
定义
变量时我们
声明
了它的类型和名字。可以通过使用extern关键字
声明
变量名而不
定义
它。 以上解释讲得还是比较清楚的,有分配空
C++中
声明
和
定义
的
区别
2
CSDN里用人
问
: 我一直以为
定义
=
声明
+初始化,即int i;是
声明
,int i =0;是
定义
。 但看侯捷翻译的Effective C++上面说string ps;也是个
定义
(在条款
定义
应该尽量靠后的那节),如果
定义
过早,就会过早引入构造的负担。 难道我对
声明
和
定义
的概念一直有错吗
声明
不导致内存分配,那么到底如何区分
定义
和
声明
? 我在楼下回帖里挑选了几个比较靠谱的答案
java
声明
和
定义
_在Java中
声明
和
定义
有什么
区别
?
Java语言规范广泛地指定并使用术语“
声明
”,但除了作为普通的英语单词之外,它不使用“
定义
”。我的证据是,“
声明
”一词在JLS目录和索引中出现了很多次,但是“
定义
”一词也没有出现在其中。所以,当你看到有人在Java的上下文中使用“definition”这个词时,他们要么用的是非技术意义上的,要么就是用他们的术语来 。在后一种情况下,它们可能与技术术语“
声明
”意思相同,或者也可能意味着其他意思。 如...
C语言和C++在
声明
和
定义
之间的
区别
声明
是告诉编译器有一个变量或函数,并标明是什么类型的. 而
定义
,是明确告诉编译器,这个变量或函数的值和实现方式. 一般来讲,
声明
变量并不会占用存储空间,而
定义
变量会占用存储空间.
声明
函数只提供函数的格式,
定义
函数则提供函数的实现代码. 当然,很多时候,
声明
和
定义
是合并在一起的,这样的
声明
称为为
定义
声明
. 举例来讲: int test=1;//这是一个
定义
声明
,term被分配了内存空
C++ 语言
65,203
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章