初始化

✍ dations ◷ 2025-12-06 07:25:19 #计算机编程

初始化(英语: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。

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

相关

  • 抗生素生长促进剂抗生素生长促进剂(antibiotic growth promoters,AGPs)指在畜牧业中,作为非治疗用途使用的抗生素添加剂。20世纪50年代起,抗生素生长促进剂开始在动物生产中应用。2006年起,欧洲禁
  • 恩纳恩纳(意大利语:Enna),是意大利恩纳省的一个市镇。总面积357.18平方公里,人口27963人,人口密度78.3人/平方公里(2009年)。ISTAT代码为086009。
  • 罗伯特·布朗罗伯特·布朗(英语:Robert Brown,1773年12月21日-1858年6月10日),19世纪英国植物学家,主要贡献是对澳洲植物的考察和发现了布朗运动。布朗出生于苏格兰的东海岸的芒特罗兹,在爱丁堡
  • 阿尔斯特苏格兰语阿尔斯特苏格兰语(英语:Ulster Scots或Ulster-Scots,阿尔斯特苏格兰语:Ulstèr-Scotch)指的是在爱尔兰阿尔斯特省境内所说的一种低地苏格兰语方言。 一些区分方法把带着阿尔斯特
  • 氨基脲氨基脲(SEM)是硝基呋喃类(Nitrofurans,本文中简式NFs)药物中呋喃西林的代谢物。NFs是一类化学合成的广谱抗菌药物,不仅能够抑制乙酰酯酶A,而且可干扰细菌糖代谢,其残留代谢物有致畸
  • 太空先锋《太空先锋》(英语:The Right Stuff),又译《征空先锋》、《太空英雄》,是一部1983年正式上映的美国电影,基于美国新闻作家兼记者汤姆·沃尔夫所著的写实性小说《真材实料》(The Rig
  • 尤索夫·巴拉克尤索夫·巴拉克(波斯语:یوسف برک‎,1984年2月2日-),阿富汗职业足球运动员,现效力黑森卡塞尔。
  • 二道河 (卡岔河支流)二道河位于中华人民共和国吉林省北部,是卡岔河右岸支流,发源于吉林舒兰市天德乡大房屯北,向北流经榆树市黑林镇郑家炉水库、景阳村(原属谢家乡)、新立镇莲花村、什家村、鹰嘴村、
  • 清凉澄观清凉澄观(737年-838年,一说738—839),俗姓夏侯,字大休,赐号清凉国师,唐朝越州山阴(今浙江省绍兴市)人,华严宗四祖。清凉澄观,生于唐玄宗开元二十五年(737年),十一岁时,从越州宝林寺霈禅师出
  • 花鹿花鹿,别名斑鹿,白斑鹿(),是属于鹿科的一种,生活在斯里兰卡,尼泊尔,孟加拉国,和印度的森林地带。是印度森林中最常见的鹿种。背面浅红褐色,具斑点,腹面白色。雄鹿生角,分三叉,可长大75厘米