当前位置:  开发笔记 > 编程语言 > 正文

C,C++,C#,Java和Python中的声明,定义,初始化

如何解决《C,C++,C#,Java和Python中的声明,定义,初始化》经验,为你挑选了1个好方法。

这些术语在上述每种语言中的含义是什么?在这方面,为什么语言不同(无论他们做什么,如果他们做的话)?



1> Adam Rosenfi..:
C/C++:

一个声明是一个语句"这里的东西,这是事情的类型名称,但我不会告诉你这事多".

一个定义是,说:"这里是什么名称,它到底是什么"的声明.对于函数,这将是函数体; 对于全局变量,这将是变量所在的转换单元.

初始化是一个定义其中变量也给出一个初始值.某些语言会自动将所有变量初始化为某个默认值,例如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更加宽松,因为变量在使用之前不需要声明.由于绑定是在运行时解析的,因此也不需要声明函数.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有