數(shù)組的智能初始化
更新時(shí)間: 2007-05-25 14:52:53來(lái)源: 粵嵌教育瀏覽量:902
數(shù)組的智能初始化
不少人使用的數(shù)組初始化方法是這樣的:
int a[100];
for (int i = 0; i < sizeof(a); i++) a[i] = 0;
一個(gè)for循環(huán)的初始化方法效率顯然不夠高,代碼也不夠漂亮。其實(shí) C++ Standard Library早已為我們提供了一個(gè)又與初始化的強(qiáng)力工具 memset。
void memset(void *s, int c, size_t n);
memset就是把從地址s開(kāi)始的內(nèi)存以字符c寫(xiě)入,直到有n個(gè)這樣的字符被寫(xiě)入為止。
因此,我們利用這個(gè)強(qiáng)力工具來(lái)替換for循環(huán)。代碼看起來(lái)漂亮多了。另外,由于memset使用底層的內(nèi)存操作,效率要比f(wàn)or來(lái)得高。
int a[100];
memset(a, 0, sizeof(a) );
但是,一般而言我們并不是要把我們定義的數(shù)組用'a'或者什么別的字符初始化。0(NULL)才是初始化中常用的值?;谶@個(gè)事實(shí),編譯器為我們提供了智能初始化的方法。這種方法既快捷又簡(jiǎn)明。
int a[100] = {0};
有人也許以為這種形式的初始化只會(huì)令a[0]為0而其他的并不會(huì)被初始化為0。但事實(shí)并不是這樣的。在標(biāo)準(zhǔn)C++中,一旦你在數(shù)組定義時(shí)就對(duì)其使用'{ }'初始化,不論'{'與'}'之間的數(shù)值是多少(當(dāng)然給比數(shù)組的上界小了)編譯器會(huì)自動(dòng)給你沒(méi)有初始化的項(xiàng)用0初始化。因此上面的語(yǔ)句實(shí)際上把數(shù)組a的所有項(xiàng)都初始化為0了。
如果你還不太理解或是不相信,可以看看下面的小程序,在你的機(jī)器上跑一跑。實(shí)踐是檢驗(yàn)真理的標(biāo)準(zhǔn)嘛。
///: show the initialization of an array
#include <iostream>
using namespace std;
enum {array_size = 6};
void watch(const int *x) { // go through the whole array
for (int i = 0; i < array_size; i++)
cout << " x[" << i << "] = " << x[i] ;
cout << endl;
}
void main() {
int a[array_size] = {0};
int b[array_size] = {1};
int c[array_size] = {1,2,3};
int d[array_size]; //the compiler may give a warning for
//not initializing the array
watch(a);
watch(b);
watch(c);
watch(d);
}
///:~
以下是輸出的結(jié)果:
x[0] = 0 x[1] = 0 x[2] = 0 x[3] = 0 x[4] = 0 x[5] = 0
x[0] = 1 x[1] = 0 x[2] = 0 x[3] = 0 x[4] = 0 x[5] = 0
x[0] = 1 x[1] = 2 x[2] = 3 x[3] = 0 x[4] = 0 x[5] = 0
x[0] = 2008948808 x[1] = 37879496 x[2] = 2009050137 x[3] = 37879776 x[4] =
2009087664 x[5] = 2008948784
粵嵌動(dòng)態(tài)
推薦閱讀
- ·Linux字符設(shè)備驅(qū)動(dòng)框架解析:file_operations的核心作用與實(shí)現(xiàn)
- ·廣東朝歌數(shù)碼科技股份有限公司專場(chǎng)招聘會(huì)
- ·深化產(chǎn)教融合,共筑技能人才培養(yǎng)新生態(tài) —— 廣州華立學(xué)院到訪粵嵌從化校區(qū)為深化產(chǎn)教
- ·校企合作新突破 | 粵嵌科技與三亞學(xué)院共探產(chǎn)教融合新路徑
- ·粵嵌科技入選國(guó)家級(jí)職業(yè)數(shù)字展館聯(lián)合建設(shè)單位,賦能計(jì)算機(jī)程序設(shè)計(jì)員高技能人才培養(yǎng)
- ·嵌入式實(shí)時(shí)操作系統(tǒng)的性能優(yōu)化與實(shí)現(xiàn)路徑
- ·校企攜手賦能教育!粵嵌科技助力海南科技職業(yè)大學(xué)探索 AGI 時(shí)代教學(xué)新范式
- ·嵌入式系統(tǒng)中的低功耗設(shè)計(jì)策略與實(shí)現(xiàn)路徑
- ·深圳市軒宇軟件開(kāi)發(fā)有限公司專場(chǎng)招聘會(huì)
- ·嵌入式系統(tǒng)中的代碼空間優(yōu)化:策略與實(shí)踐