在C语言中声明和定义有什么区别

 我来答
百度网友75015d9
2008-06-06 · TA获得超过643个赞
知道小有建树答主
回答量:196
采纳率:0%
帮助的人:268万
展开全部
变量的声明,其实就是一个空的东西,在C中就相当与一个空的指针,它什么也没有指向,没有任何实际的意义,例如int a。
而变量的定义,就不一样了,它是在内存中指定了一定的空间,一旦定义一个变量,系统自动给它分配一定的内存空间。它是有一定的实际意义的。例如int a=10。
两者区别:
声明不为变量分配空间,而定义为变量分配空间
因此同一个变量的声明可以出现多次,而只能定义一次
中函数的声明是可以重复的,但是变量却不可以。对于变量的声明都会分配内存空间,只是这部分内存空间里存放的是随机值,直到被定义之后将赋予相应的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
盛大2012
推荐于2017-12-16
知道答主
回答量:6
采纳率:0%
帮助的人:7.3万
展开全部
声明是引入标识符和标识符的类型(类型可以是整形,函数,浮点型等)。声明也可理解为是让编译器知道有这么个标识符,方便以后引用。如下面这些声明语句:

extern int i;
extern double d;
extern int foo(int, int);
double f(int, double); // 函数声明时extern可以省略。

定义实际是实例代(或实现)标识符。可为标识符分配存储空间,还可为标识符指定初始值。如下是定义的语句:

int i;
double d = 3.14;
int foo(int lhs, int rhs) {return lhs*rhs;}
double f(int i, double d) {return i+d;}

定义可以代替声明,因为在定义的时候我们也指定了标识符和类型。但所有标识符只能有一次定义,而声明可以有多次,如下声明在C和C++中都是合法的:
extern int i;
extern int i; //多次声明了变量i
extern double d;
extern double d;//多次声明了变量d
double f(int, double);
double f(int, double);//多次声明了函数f

若同一个标识符多次定义,则编译器不知道哪个定义才是标识符的实现,编译会通不过。而多次声明不会,它只是告诉编译器有这么个标识。区分声明和定义相当重要,一个叫秒秒学的教程网站上的多个课程如《Java基础课程》和《C语言基础》中都有说明这个问题,推荐你去看看,希望对你有帮助。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
stream_yaya
2008-06-06 · 超过31用户采纳过TA的回答
知道答主
回答量:179
采纳率:0%
帮助的人:0
展开全部
对于变量本省而言,声明和定义没什么区别。比如说Int i;其实等同于int i=0;所以声明也就是定义。
对于函数而言,才是有区别的。比如声明函数int sum();
而定义应该给出具体的算法。int sum(int x,int y)
{return x+y;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wdwy003
2018-02-04 · TA获得超过2113个赞
知道小有建树答主
回答量:1073
采纳率:0%
帮助的人:1045万
展开全部
声明就是声明一下我用到的变量或者类型,变量或者类型的实际定义并不一定在本文件内。

给变量分配了空间才叫做定义,否则就是声明
比如extern int a; 是声明,a的定义是在别处,这里并没有为a分配空间。
比如int a;即是定义
函数以及类型,声明就是用函数或者类型的头部来声明
比如 struct x;声明 struct x{};定义
比如 int fun();声明 int fun(){}定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5c2136c
2008-06-06 · 超过28用户采纳过TA的回答
知道小有建树答主
回答量:297
采纳率:0%
帮助的人:131万
展开全部
定义包括声明和使用,也有的定义就是声明。
例如:
int i;//声明(也有叫定义)
i=2;//使用
我把两个合起来的叫定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式