永发信息网

声明和申明哪个有法律,c++中定义和声明有什么区别?

答案:1  悬赏:0  手机版
解决时间 2021-05-05 04:50
声明和申明哪个有法律,c++中定义和声明有什么区别?
最佳答案
如果是指变量的声明和定义:
从编译原理上来说,声明是仅仅告诉编译器,有个某类型的变量会被使用,但是编译器并不会为它分配任何内存。而定义就是分配了内存。
对于下面的两句代码:
void Func()
{
int a;
int b=1;
a=0;
}
对于第一行代码,编译器不会做任何事,它不会为它在栈中分配一点东西,直到第三句,a=0;时,编译器才会将其压入栈中。而对于int b=0;这一句,编译器就会生成一条指令,为它赋值。如果反汇编,看到的代码可能是这样的:
push 1;
push 0;
当然,并不一定编译器就会样做,也有可能在声明int a时,编译器就会把一个废值入栈,到第三条再为其赋值,这要看编译器的具体取舍,所以,声明不一定不是定义,而定义一定是定义。
但是,下面的声明,一定仅仅是声明:
extern int a;
这表时,有一个int变量a,它一定是在另外其他地方定义的,所以编译器此时一定不会做什么分配内存的事,因为它就是声明,仅仅表明下面的代码引用了一个符号,而这个符号是int类型的a而已。
如果是指函数的声明和定义:
声明:一般在头文件里,对编译器说:这里我有一个函数叫function() 让编译器知道这个函数的存在。
定义:一般在源文件里,具体就是函数的实现过程 写明函数体。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
谁能拉我进QQ校友啊 ?要多人的
qq停车位经验最高等级是15级吗?15级满后经验
什么是潜力股?什么看
如何管理新产品开发人才审计的观点?1000字以
能不能把全部图标给灭了
职业人的标准是什么?
我玩梦幻西游为什么一卡一卡的吗,音乐正常
目前诺基亚6122c大概需要多少钱?
旺旺房地产这个地址在什么地方,我要处理点事
碳酸饮料对人体有什么伤害”
形容人类渺小的成语
为什么我的qq秀不显示
不是QQ会员,可不可以保存动态头像(本地上传
为什么我的QQ老是出现中奖?
放假要到什么地方去旅游?
推荐资讯
春江上几人还的上一句,愿驰千里足 送儿还故乡
大家看了《蜗居》之后都感觉怎么样啊?
盎司是什么
上高中定什么杂志提高作文水平,有人说作文升
飞车这个巧克力糖果的功能可不可以用在升级奖
打破吉尼斯纪录的那80万仙后是指哪些啊?只是
有何职业适合中学生
怎么把黄钻自动续费工关了
冬天下雪,恋人怎样才会更幸福呀?
德州汉堡(乐昌店)地址有知道的么?有点事想过
千韵风地址有知道的么?有点事想过去
wow法师怎么控龙
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?