这些术语在上述各种语言中是什么意思?为什么这些语言在这方面有所不同(无论他们做什么,如果有的话)
解决方法
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更加松散,因为变量在使用之前不需要被声明.由于绑定在运行时解析,所以也不需要声明函数.
原文地址:https://www.jb51.cc/c/114239.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。