初始化

✍ dations ◷ 2025-11-08 22:05:49 #计算机编程

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

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

相关

  • 连接蛋白结构 / ECOD连接蛋白(Connexin,Cx)。在脊椎动物,由connexin组成的间隙连接通道(Gap Junction channel)介导相邻细胞之间离子、小分子营养物质交换及信号分子传播。哺乳动物发育早
  • 狄仁杰狄仁杰(630年-700年11月11日),字怀英,号德英,唐代并州阳曲县(今山西省太原市阳曲县)人。为唐朝、武周时的著名宰相,刚正廉明,执法不阿,以身护法。任大理寺丞,一年中判决了大量的积压案件
  • 舒马金群岛舒马金群岛(阿留申语:Qagiiĝun;英语:Shumagin Islands)是位于北美洲阿拉斯加半岛南边,阿拉斯加湾内的群岛,由20个小岛组成。行政方面由美国阿拉斯加州东阿留申自治市镇负责管辖,土
  • 祖籍祖籍,是指一个家族族群以父系共同认定的一位祖先的生长地。祖籍与籍贯、户籍的意义不太相同,祖籍通常是追认极遥远的祖先生长地,籍贯通常是指父亲或祖父的长居之地,户籍则是其本
  • 智利王蟹智利王蟹(学名Lithodes santolla)是一种皇帝蟹。它们分布在南美洲太平洋的海岸,特别是在智利瓦尔迪维亚南纬39°50'至南纬60°的合恩角。它们生活在水深至150米的深渊底栖带;但
  • 平抛运动当物体在具有一定初速度并水平抛出时,在空气阻力忽略不计的情况下,只在重力作用下的运动叫做平抛运动。由牛顿第二定律( F = m a
  • 大学校会议大学校会议(法语:Conférence des grandes écoles)是法国的一个高等教育研究机构间组织,成立于1973年,创始成员12个(11所工程师学校和1所高等商业学校)。组织的职能为促进成员在法
  • 第二十英勇凯旋军团第二十英勇凯旋军团(拉丁语:Legio XX Valeria Victrix)古罗马军队建制名称。由屋大维于约公元前31年后建立并存在至公元4世纪。该军团在提贝里乌斯带领下参与了公元6年发生的马
  • 赵焕赵焕,或作宦(1541年-1619年),字文光,号吉亭,山东掖县人。明朝政治人物,万历年间吏部尚书。明世宗嘉靖四十四年(1565年)进士,任乌程县知县,调工部主事,再改任御史,又任顺天府丞,左佥都御史。
  • SIGSEGV在POSIX兼容的平台上,SIGSEGV是当一个进程执行了一个无效的内存引用,或发生段错误时发送给它的信号。SIGSEGV的符号常量在头文件signal.h中定义。因为在不同平台上,信号数字可