初始化

✍ dations ◷ 2025-11-21 20:15:11 #计算机编程

初始化(英语:Initialization)在计算机编程领域中指为数据对象或变量赋初值的做法,如何初始化则取决于所用的程序语言以及所要初始化的对象的存储类型等属性。用于进行初始化的程序结构则称为初始化器或初始化列表。初始化和变量声明是明显有区别的,而且初始化也先于变量声明进行,但两者在实践中仍常被混淆。

初始化可以在编译时通过静态嵌入值来实现,也可以在运行时进行分配。进行初始化的代码部分称为“初始化代码”,但这部分代码可能还包含其他的一次性使用函数(例如打开文件)。将存储单元设为16进制0的做法也称作“清除”,这一般在机器代码级用异或指令的方式实现(指令的两个操作数必须为相同的变量),因为这不需要额外的内存访问。

在C/C99/C++中,初始化器是声明器的可选部分,它由一个'='以及其后的一个表达式(或含有多个以','隔开的带圆括号表达式的单一列表)所组成。后面这一列表有时也被称为“初始化(器)列表”(initializer list)或”初始化列表”(initialization list),不过initializer list也是C++中用于初始化类或结构中的元素的保留字。

一个包含初始化的声明则通常被称为定义。根据C++标准规定,定义是声明的一种;具体来说,声明只需为函数或数据对象指定类型即可,而定义则还必须为其赋初值。所以“声明和定义”的提法严格来说是不准确的,但这种说法仍被广为采用。

一个类/结构的构造函数可以在定义中于构造函数体前包含一个初始化列表,用以给类/结构的元素赋初值。例如如下程序段:

  struct int_complex {    int re, im;    int_complex() : re(0), im(0) { }  };

这里的" : re(0), im(0)"就是初始化列表。

有时“初始化列表”这个术语也用来指数组或结构初始化器中的表达式表。

在C++0x标准中也以模板的形式提供了一个更强力的初始化表的概念,即为std:initializer_list。

在程序里,数据初始化也可能在没有由明确的语法来实现的情况下进行。例如说,如果一个静态变量在没有初始化(即未指定初值)的情况下被声明,则:

相关

  • 病媒在流行病学中,载体又称为病媒,是指疾病携带者和传播者,但其本身不受影响。如疟蚊是疟疾的载体,它在吸血的过程中可以将导致疟疾的疟原虫传入人体内,但疟原虫对于疟蚊本身却不带来
  • 拟交感神经药拟交感神经药,指与兴奋交感神经的效应相同的药物,也叫做拟交感药物。拟交感药的主要目的是兴奋肾上腺素受体。其中包括肾上腺素、去甲肾上腺素、麻黄碱及一些合成药如异丙肾上
  • 液态氧液氧(常用缩写LOX或LO2表示)是液态的氧气。它在航天、潜艇和气体工业上有重要应用。液氧为浅蓝色液体,并具有强顺磁性。它的主要物理性质如下:通常气压(101.325 kPa)下密度1.141 g
  • 药用胰岛素胰岛素(英语:Insulin)是用胰岛素或胰岛素类似物制成的蛋白质类药物。药用胰岛素有很多种,包括速效型(如门冬胰岛素)和长效性(如地特胰岛素)等。胰岛素可以治疗多种疾病,包括糖尿病和
  • 材料性质热力学上的“材料性质”一词指某种给定材料的内禀性质,它们多与热力学势的二阶偏导数有着直接联系。对于一个简单的单组分系统,常见的材料性质有:以上各式中,
  • A系列与B系列在哲学中,A系列与B系列是对于在事件之中的时序关系的两种不同描述。这两种系列根本不同之处在于对于事件间的时间关系描述的时态用法。这组词汇最早被苏格兰观念论哲学家John
  • 常染色体显性遗传在基因学中,显性(英语:dominance)是一个基因中一对等位基因之间的关系,其中一个等位基因的表型会表现出来,掩盖了同一基因座中另一个等位基因的表现。前面的等位基因称为显性基因,
  • 乔治·华莱士小乔治·科利·华莱士(George Corley Wallace Jr.,1919年8月25日-1998年9月13日),出身美国亚拉巴马州的律师、政治家,美国民主党成员,曾三次出任亚拉巴马州州长。华莱士曾四次参选
  • NKT细胞自然杀伤T细胞(Natural killer T cells),简称NKT细胞(NKT cells),是一类异质的T细胞,与T细胞和NK细胞(自然杀伤细胞)拥有部分相同的特征。许多NKT细胞都能识别非多型的CD1d(英语:CD1d)分
  • 雅库布·尤加斯雅库布·尤加斯(捷克语:Jakub Jugas;1992年5月5日-)是一位捷克足球运动员。在场上的位置是后卫。他现在效力于捷克足球甲级联赛球队布尔诺足球俱乐部。他在2010年8月28日首次在联