初始化

✍ dations ◷ 2025-09-10 03:58:53 #计算机编程

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

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

相关

  • 手指手指是人或一些灵长类动物(例如猿)的手上的指头。人的手指虽然非常灵活,但也非常纤细,原因是因为活动手指的肌肉不位于手指内,而位于下臂,这些肌肉通过长的腱来指导手指的运动。有
  • 庞贝坐标:40°45′2″N 14°29′20″E / 40.75056°N 14.48889°E / 40.75056; 14.48889庞贝(拉丁文:Pompeii),或译庞培,为古罗马城市之一,位于那不勒斯湾维苏威火山脚下,“庞贝”的词根
  • 赖明诏赖明诏(英语:Michael M. C. Lai,1942年9月8日-),中央研究院院士,曾任国立成功大学校长。专长为病毒学与分子生物学,被台湾学界誉为“冠状病毒之父”。当选为中央研究院院士,2003年到2
  • 各国时区列表本列表列出各国现行时区规划,根据国家或地区的时区数量进行排序,时区包括各国属地的时区(排除南极领地),法国为时区最多的国家,共计12个时区,部分国家采行夏时制,于夏季时调快一小
  • 埃塞魮埃塞魮(学名:)为辐鳍鱼纲鲤形目鲤科的其中一个种。被IUCN列为濒危保育类动物,分布于非洲埃塞俄比亚,为特有种,体长可达25.8公分。 维基物种中有关埃塞魮的数据
  • 俱卢舍拘卢舍(梵语:krośa;巴利语:kosa;标准藏语:rgyan-grags),又译为俱卢舍、拘屡奢,为古印度长度单位,佛教沿用。意译为一牛吼地、一牛鸣地,即大牛鸣叫声所及之范围,也指大鼓声所及之范围。
  • 奥托·李卜曼奥托·李卜曼() (1840年2月25日-1912年1月14日),德国新康德主义哲学家。李卜曼出生于西里西亚省 (普鲁士)勒温贝格的一个犹太家庭,就读于莱比锡大学和哈雷-维滕贝格大学。李卜曼在
  • 奥托·雷曼奥托·雷曼(Otto Lehmann,1855年1月13日-1922年6月17日),德国物理学家,被誉为“液晶之父”。1855年1月13日,雷曼出生在德国康斯坦茨。从事自然科学工作的父亲从小就培养起他对晶体
  • 张缙彦《明郭忠节公联吟雅集图》之张缙彦像,明人绘 河南新乡孝思堂郭氏祠堂藏张缙彦(1600年-1672年),字濂源,号坦公,又号外方子,别号大隐,河南新乡人,明末清初政治人物,同进士出身。崇祯四年(1
  • 漆油漆油是从漆树籽(漆树的种子)中提炼的植物油。