C、C++、C#、Java 和 Python 中的声明、定义和初始化 [关闭]

2023-11-27

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


C/C++:

A 宣言是一个声明,表示“这是某物的名称及其类型,但我不会告诉您更多有关它的信息”。

A 定义是一个声明,表示“这是某物的名称以及它到底是什么”。对于函数来说,这就是函数体;对于全局变量,这将是变量所在的翻译单元。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C、C++、C#、Java 和 Python 中的声明、定义和初始化 [关闭] 的相关文章

  • 反对“initialize()”方法而不是构造函数的争论

    我目前负责查找代码库中的所有不良做法 并说服我的同事修复有问题的代码 在我的探索过程中 我注意到这里很多人都使用以下模式 class Foo public Foo Do nothing here bool initialize Do all
  • 为什么 C++ 标准没有将 sizeof(bool) 定义为 1?

    Size of char signed char and unsigned char由 C 标准本身定义为 1 个字节 我想知道为什么它没有定义sizeof bool also C 03 标准 5 3 3 1 说 sizeof char s
  • 在 C++ 中引入引用的根本原因是什么?

    从我最近的问题中发生的讨论来看 为什么 C 引用被认为比指针更安全 https stackoverflow com questions 4715740 why is a c reference considered safer than a
  • 使用 cmake add_definitions 的文件路径

    我正在尝试替换硬编码预处理器 define MY FILE PATH usr local myfile 在 cmake 中使用 add definitions add definitions DMY FILE PATH MY FILE PA
  • F# 中的数组初始化

    如何根据给定的记录类型在 F 中创建和初始化数组 假设我想创建一个包含 100 个 record1 记录的数组 e g type record1 value1 string value2 string let myArray Array i
  • 成员字段、构建顺序

    在 C 中 当执行如下所示的操作时 构造顺序是否得到保证 Logger Logger kFilePath logs runtime log logFile kFilePath 是的 施工顺序始终得到保证 但是 不能保证它与对象在初始值设定项
  • 联合初始值设定项列表的正确格式是什么?

    假设我有一个类 结构 其中只有一个联合 类似于 struct Box union AS128 intr struct AS32 a b c d 为这种数据类型创建初始值设定项列表的正确方法是什么 Box iMyBoxA 10 10 100
  • 未初始化变量的值是如何确定的?

    给定一个程序 int main short myVariableName1 stores from 32768 to 32767 short int myVariableName2 stores from 32768 to 32767 si
  • HTTPbis - bis 是什么意思?

    我经常看到 bis 附加到协议版本 例如 v 34bis 或 httpbis bis 是什么意思或代表什么 我认识的一位电信工程师认为它可能起源于法国 正如其他人已经说过的 bis 来自 两次 或 重复 http oxforddiction
  • 类内的枚举(TypeScript 定义文件)

    我已经四处搜寻 但似乎找不到答案 希望您能提供帮助 如何添加枚举Image 这是我理想的情况 但我得到了一个错误 declare module Lib export module Graphics export class Image en
  • '非静态引用成员,不能使用默认赋值运算符'

    当我尝试编译代码时出现此错误 non static reference member Timestep Timestep previousTimestep can t use default assignment operator 我创建一
  • 在 C 中声明和初始化数组

    C 有没有办法先声明然后初始化数组 到目前为止 我一直在初始化一个这样的数组 int myArray SIZE 1 2 3 4 但我需要做这样的事情 int myArray SIZE myArray 1 2 3 4 在 C99 中 您可以使
  • 派生类的聚合初始化

    以下代码无法使用 Visual Studio2017 或在线 GDB 进行编译 我期望它能够编译 因为迭代器只是一个具有类型的类 并且它是从公共继承的 这是不允许的还是在 VS2017 中不起作用 template
  • C# 中 switch 的空情况是否与下一个非空情况合并? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 使用以下代
  • Android:如何在 Activity 内正确初始化 YouTube 播放器?

    我正在尝试在活动中启动 YouTube 播放器 然而 我时不时地会收到此异常 Fatal Exception java lang IllegalStateException YouTubeServiceEntity not initiali
  • 什么是 ref 可以做但引用却不能做的事情?

    什么可以ref难道参考文献不能吗 可以 match value try thing Some ref e gt do stuff e 不能同等地表达为 match value try thing Some e gt do stuff e 编
  • Windows 7 机器上的 MongoDB:无法建立连接

    在 Windows 7 机器上使用 mongod exe 启动 Mongo 后 我尝试启动 mongo shell 但失败并出现以下错误 无法连接到 127 0 0 1 27017 原因 errno 10061 否 由于目标机器主动拒绝而无
  • `int a = 0, b = a` 是否有未定义的行为? [复制]

    这个问题在这里已经有答案了 问题标题说明了一切 做表格的声明int a 0 b a有未定义的行为 不 这是明确定义的 这是一个带有两个声明符的声明 a and b 每个声明符都有一个初始值设定项 Each 初始化声明符声明中的内容被单独分析
  • 空检查时可能未初始化错误

    我正在检查变量是否已初始化 但此时 netbeans 给了我variable reader might not have been initialized警告 我该如何解决 抑制这个问题 这是我的代码 摘要 final Reader rea
  • 如何正确初始化“min”变量?

    我的代码中有一个小问题 用于从一系列数字中查找最小值 当我初始化时min 0 最小值结果为0 但是当我不初始化时min 答案是正确的 为什么会出现这种情况 Xcode 告诉我应该初始化min多变的 int a 20 0 int max 0

随机推荐

  • 启动一个即使在 IE 中也能正常运行的文件下载?

    我正在寻找有关从 Javascript 启动文件下载的最佳方法的更多想法 启动下载的最佳方式 有很多好的想法 可以总结一下 在 iframe 上设置 src 使用 window location replace 使用带有元刷新标题的页面 使
  • Codeigniter URL 在没有 index.php 的情况下无法工作

    我刚刚建立了一个新网站http www reviewongadgets com 但是URL渲染有问题 当我输入如下 URL 时 它不起作用并给出页面未找到错误http www reviewongadgets com latest mobil
  • C 结构体成员的默认值

    是否可以为某些结构成员设置默认值 我尝试了以下方法 但是会导致语法错误 typedef struct int flag 3 MyStruct Errors gcc o testIt test c test c 7 error expecte
  • 在seaborn中使用Unicode文本

    我想在 Seaborn 中使用 Unicode 文本 Python 2 7 我可以使用 Unicode 文本作为 matplotlib 的图块 例如 import matplotlib pyplot as plt from matplotl
  • 告诉 Puppeteer 打开 Chrome 选项卡而不是窗口

    如果我打开了现有的 Google Chrome 窗口 我想告诉 puppeteer 打开一个新选项卡而不是打开一个新窗口 有没有办法做到这一点 是否有一些选项或标志我可以传递给木偶师来完成此任务 I have const puppeteer
  • 标准表单身份验证 Java servlet

    使用 Java Servlet 进行表单身份验证的标准方法是什么 从现在开始 我自己使用简单的 POST HTML 表单实现了这一点 根据数据库检查发送的参数 如果存在 将 User 对象保存到 HttpSession 中 检查每个 Ser
  • 解析 ANTLR 中的字符串插值

    我正在开发一个用于内部目的的简单字符串操作 DSL 并且我希望该语言能够支持 Ruby 中使用的字符串插值 例如 name Bob msg Hello name print msg prints Hello Bob 我正在尝试在 ANTLR
  • 证明在循环中使用范围运算符不会使用额外的内存

    当前的文档范围运算符 声明它不会消耗内存计数循环 范围运算符对于编写很有用foreach 1 10 循环以及对数组进行切片操作 在当前的实现中 没有创建临时数组当范围运算符用作 foreach 循环中的表达式时 但是当您编写如下内容时 旧版
  • WPF 将 StackPanel 的宽度从 0 动画到自动?

    我正在尝试在 StackPanel 的可见性从宽度 0 变为自动宽度时对其进行动画处理 这是我目前所拥有的
  • 使用 R 创建起点-终点矩阵

    我的数据框由个人和他们在某个时间点居住的城市组成 我想每年生成一个出发地 目的地矩阵 记录从一个城市到另一个城市的移动次数 我想知道 如何自动生成数据集中每年的出发地 目的地表 如何生成相同 5x5 格式的所有表格 5 是我的示例中的城市数
  • 基于 Spring-Boot 模块的集成测试

    我有一个多模块 Spring Boot 项目 我想知道如何设置集成测试来测试 Spring Data JPA 存储库 以下方法因此异常而失败 HV000183 无法加载 javax el E xpressionFactory 检查类路径上是
  • 致命错误 Varien_Autoload 未找到

    今天是个好日子 我使用示例数据安装了 magento 刷新了页面 一切似乎都正常 我的整个商店充满了样本数据 几分钟后我再次刷新 从那以后我不断收到此错误 PHP 致命错误 在第 53 行 var www vhosts shop cyber
  • libvlc 流屏幕的一部分

    我想使用 vlc 库流式传输屏幕的一部分 我写了一个小例子 include
  • DialogFragment 和 onDismiss

    我正在使用一个DialogFragment 我是这样展示的Activity DialogFragmentImage dialog DialogFragmentImage newInstance createBitmap dialog onD
  • 将 Java2D 保存为 SWF(闪存)

    我正在尝试将 Java2D 中绘制的矢量图像的输出保存到 SWF 文件中 有很多很棒的库可以将 java2D 输出保存为 SVG BATIK 和 PDF itext 等内容 但我找不到 SWF 库 有任何想法吗 我刚刚得到一个使用的示例雪碧
  • PHP:从链接标题中删除“http://”

    我有一个看起来像这样的字符串 string a href http google com http google com a 我怎样才能删除http 部分来自链接文本 但将其保留在 href 属性中 如果不使用完整的解析器 这可能在大多数情
  • 为什么 Rust 忽略 &str 的生命周期检查?

    fn main let strA a let result let strB abc result longest strA strB Will return strB println The longest string is resul
  • Aptana 1.5“svn:解决大小写错误”

    我今天安装了 Aptana 1 5 但是安装后 当我尝试提交 更新 修复等时 我的所有 SVN 项目都会出现这样的错误 Access is denied svn Error resolving case of C Users Brayn M
  • 如何添加标记 onClick 并在 google-maps-react 中显示我的地理位置?

    我在谷歌地图文档上发现了很多有用的信息 但在 html 中简单使用 js 以防万一react老实说我不明白 源代码 import React Component from react import Map InfoWindow Marker
  • C、C++、C#、Java 和 Python 中的声明、定义和初始化 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 上述每种语言中的术语含义是什么 为什么这些语言在这方面有所不同 无论它们在哪里 如果有的