声明跟定义的本质区别是什么?

作者&投稿:雷追 (若有异议请与网页底部的电邮联系)
函数声明的声明与定义的区别:~

函数的声明与函数的定义形式上十分相似,但是二者有着本质上的不同。声明是不开辟内存的,仅仅告诉编译器,要声明的部分存在,要预留一点空间。定义则需要开辟内存。 函数声明只是对编译系统的一个说明: 函数声明是对定义的函数的返回值的类型说明,以通知系统在本函数中所调用的函数是什么类型。 不包含函数体(或形参) 调用几次该函数就应在各个主调函数中做相应声明 函数声明是一个说明语句,必须以分号结束!

定义是人为规定的,赋予特定对象一定的内涵,对它修饰限定。
本质是在现有的科技水平,自然理论,思想理论的基础上揭示事物的内涵,但它也有人为的成分存在,也许它现在是对的,但也许会被推翻,这一点在定义上也是一样的。
在中学教材中有相应的问题,可问老师,查资料确定,但我还是那句话,有些问题是值得商榷的,不能太较真的。
以上仅仅是我个人观点。

  •              声明就是指给除了当前变量或者函数,或者类什么的名字,不给其中的内容,就是先告诉你有这样一个什么类型的变量或者函数,但是这个变量或者函数的具体信息却是不知道的。就好比跟你介绍一个人的时候,声明就是只告诉你这个人叫什么,但是缺不给你说这个人到底怎么样,他有哪些优点,缺点,喜好问题是什么的。

  •           定义就不一样了,定义直接告诉你了所有的东西,这个变量是什么,这个函数是什么功能,这个类里面包含了什么东西。很具体的说明。

  • 当然一般对于变量来说,我们不怎么区分声明或者定义之类的,一般没有人去说我要声明一个变量,然后定义这个变量什么的。要说都是直接说定义变量。

  • 声明一般都是对函数或者类来说的,声明在前,定义在后。

  • int a;可以说是声明,广泛的说是定义一个变量a,也不算错。



int a 等价于 声明一个人:小张
int a = 3 等价于 定义一个人 :小张 年龄为三岁。

定义是带有初始化的。

函数的声明和定义

void My(); // 这个是声明

//这个是定义
void My()
{

}

int a; // 这样属于声明,并没有给a定义他的值为多少,因此他可能是任意值,如果后面直接使用会有意想不到的后果
int a = 3; // 这样属于声明int类型变量a,并定义为3

int a; // 定义性声明,既属于声明又属于定义

int a = 3; //属于初始化

C语言复杂声明的本质与局限
答:通过前面例子,说明一个道理,可以从另外一个角度来理解C变量的类型声明,先确定整个表达式的结果值的类型,再考察变量本身的类型。就好比以上几个例子,a(单独一个变量都是表达式), array[n], *pA, fun(a,b)这些表达式都是int型,定义变量的语句的类型,其实就是为了说明这个语句的变量的整个表达式的结果的值的类型...

什么叫void声明?
答:void常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。代表任意类型,而不是空的意思。void * 是void类型的指针。void类型的指针的含义是:这是一个指针变量,该指针指向一个 void类型的数。在函数的参数列表和返回值中,void代表的含义是: 一个函数形参列表为void,表示这个函数...

Java的概念和定义是什么?
答:Java是一种面向对象的语言,所谓的面向对象指的是Java编程中,所有的操作都是以对象进行操作的,这样在我们编程的时候,可以将某个功能当成一个类,可以给这类东西设置自己的属性。由于计算机高级语言种类很多(C/C++、JAVA、Python、C#等等),不同的语言所侧重的领域不相同,Java所侧重的范围是互联网行业...

C语言中static char *P指针char *P指针,有什么本质的不同?
答:前者是定义一个静态的字符形指针,后者是一个字符形指针:static,若声明一个静态的局部变量的。若希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。这时就应该指定局部变量为静态局部变量。若声明的是一个...

Java不能像C++那样先声明再在后面写出主题吗?
答:所以C++使用头文件(.h)。头文件其实和原代码文件(.cpp)没有本质区别。两种文件的内容都是C++。但是.h文件一般只声明,而.cpp文件定义声明的变量和函数。这样的话,如果一个.h文件没有改变,那么所有#include这个.h而自身也没被改变的文件则不需重新编译。只有那些被改变的.cpp文件需要重新编译。除...

c#中static和const有什么区别?
答:static 是静态的修饰符,const是定义常量的修饰符;const就是只读的意思,只在声明中使用;static一般有2个作用,规定作用域和存储方式。对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;对于全局变量,如果以文件划分作用域的话。此变量只在当前文件...

typedef char a和char a 有什么区别吗???
答:typedef char a是将char重名为a,typedef(type define(类型定义的意思)),如果你要声明一个char类型的变量,可以用a代替,就是a szString,后面的char a是声明一个char类型的变量,这两句话有着本质上的区别

在C语言中,形参名与实参名到底是一样好,还是不一样好?
答:名字是否相同并不重要,重要的是类型必须相同。因为,形参是所在函数的局部变量,所以形参在所在函数中会被多次使用,你需要统筹考虑。而实参是主调函数的局部变量,是根据实际需要作为参数调用被调函数的,是否调用被调函数并不需要另外考虑实参名称,这是与形参的主要不同点。

在同一个M文件中,怎样实现参数的传递
答:虽然在头文件中和正常的程序文件中的代码没有本质区别,但是强烈不建议你把实现代码放在头文件中,头文件中一般只适合放需要对外界透露接口的函数声明,公有预编译定义(#define),结构体以及类的声明(非实现),公共类型(typedef),公共枚举(enum),这么做的原因就是防止楼主所说的问题发生。在.c文件...

c语言 char *str 与char str[] 这俩种定义字符串到底有什么区别
答:二、变量不同 char *str里的str是指针变量,str的值未初始化(局部变量的话。全局则自动初始化为NULL)。char str[ ]里str是地址常量,str的值是str[ ]的地址。三、定义方法不同:在char * str中,明显str的类型是char*。这没什么特殊的,只是一个简单的char指针。char str[]是不能这样定义的...