1. 程式人生 > >c/c++使用{}初始化陣列需要注意的(2)

c/c++使用{}初始化陣列需要注意的(2)

c/c++語言中,陣列初始化的方式主要有三種:

1、宣告時,使用 {0} 初始化;

2、使用memset;

3、用for迴圈賦值。

這次我們重點關注第1點,我們來看下面的程式碼

int main(int argc, char *argv[])
{
    int a[10];
    for(int i=0;i<sizeof(a)/sizeof(int);i++)
        printf("%d \n",a[i]);
}

列印結果如下:

19659704

19672824

14351412

14351412

19672824

0

14351452

17910228

1

14351492

很明顯沒有初始化後列印的是隨機值,接下來繼續:

int main(int argc, char *argv[])
{
    int a[10] = {0};
    for(int i=0;i<sizeof(a)/sizeof(int);i++)
        printf("%d \n",a[i]);

}

由於多了初始化操作,陣列列印結果如下:

0

0

0

0

0

0

0

0

0

0

很明顯,陣列的所有值都被初始化為0了,那麼肯定有人會說如果執行 int a[10] = {1}結果會怎麼樣?:

int main(int argc, char *argv[])
{
    int a[10] = {1};
    for(int i=0;i<sizeof(a)/sizeof(int);i++)
        printf("%d \n",a[i]);

}

列印結果:

1

0

0

0

0

0

0

0

0

0

結果發現只初始化第一個元素為1,其餘都是0!!

結論:

初始化所有元素為0時可以用{0}來賦值,但初始化為其他值是不行的!我們可以逐個賦值或{1,12,2....}

具體是怎麼回事需要理解memset函式,下一篇會講解