C,C++,C#,Java和Python中的声明,定义,初始化
答
C/C++:
一个声明是一个语句“这里是什么名称,它是型的事,但我不会告诉你这事多”。
A 定义是一个声明,说“这是什么东西的名称,它到底是什么”。对于函数,这将是函数体;对于全局变量,这将是变量所在的翻译单元。
初始化是一个定义,其中变量也被赋予一个初始值。某些语言会自动将所有变量初始化为默认值,如0,false或null。有些(如C/C++)并不是在所有情况下都是这样:所有全局变量都是默认初始化的,但堆栈上的局部变量和堆中动态分配的变量不是默认初始化的 - 它们具有未定义的内容,因此您必须显式初始化他们。 C++也有默认的构造函数,它是一个蠕虫的整体。
例子:
// In global scope:
extern int a_global_variable; // declaration of a global variable
int a_global_variable; // definition of a global variable
int a_global_variable = 3; // definition & initialization of a global variable
int some_function(int param); // declaration of a function
int some_function(int param) // definition of a function
{
return param + 1;
}
struct some_struct; // declaration of a struct; you can use pointers/references to it, but not concrete instances
struct some_struct // definition of a struct
{
int x;
int y;
};
class some_class; // declaration of a class (C++ only); works just like struct
class some_class // definition of a class (C++ only)
{
int x;
int y;
};
enum some_enum; // declaration of an enum; works just like struct & class
enum some_enum // definition of an enum
{
VALUE1,
VALUE2
};
我不熟悉你问其他的语言,但我相信他们没有太大的声明和定义之间的区别。 C#和Java对所有对象都有默认初始化 - 如果你没有明确地初始化它,所有东西都被初始化为0,false或null。 Python变得更加松懈,因为变量在使用之前不需要声明。由于绑定在运行时被解析,所以也不需要声明函数。
听起来像是对我功课。否则,为什么你想知道这些差异? – 2008-11-21 19:14:10