亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: [問詢]Array[8]={0};的問題 [打印本頁]

作者: googleboy    時間: 2007-01-10 16:35
標(biāo)題: [問詢]Array[8]={0};的問題
char Array[8]={0};

是給整個數(shù)組全部賦值為0,還是僅對第一個賦值為0?

謝謝,
作者: fireman119    時間: 2007-01-10 16:47
數(shù)組
作者: googleboy    時間: 2007-01-10 16:55
原帖由 fireman119 于 2007-1-10 16:47 發(fā)表
數(shù)組


是對整個數(shù)組嗎?

另外:
char Array[12][8] = {0};

為何GCC會出警告?

[ 本帖最后由 langue 于 2007-1-10 18:53 編輯 ]
作者: fireman119    時間: 2007-01-10 17:32
不知道,vc沒問題,俺手邊沒有環(huán)境幫你
作者: mu_mu8309    時間: 2007-01-10 18:07
原帖由 googleboy 于 2007-1-10 16:35 發(fā)表
char Array[8]={0};

是給整個數(shù)組全部賦值為0,還是僅對第一個賦值為0?

謝謝,

僅對第一個賦值吧??
作者: boxpei    時間: 2007-01-10 18:17
數(shù)組初始化的方法之一。整個數(shù)組賦值為0
作者: zwylinux    時間: 2007-01-10 18:48
一維數(shù)組的話a[n]={1}是對整個數(shù)組賦值
二維a[n][n]={1}這樣不行的
作者: langue    時間: 2007-01-10 18:55
原帖由 googleboy 于 2007-1-10 16:55 發(fā)表


是對整個數(shù)組嗎?

另外:
char Array[12][8] = {0};

為何GCC會出警告?


char Array[12][8] = {{0}};
作者: mq110    時間: 2007-01-10 20:29
原帖由 googleboy 于 2007-1-10 16:35 發(fā)表
char Array[8]={0};

是給整個數(shù)組全部賦值為0,還是僅對第一個賦值為0?

謝謝,


全部都是0, 可以看看C語言的基本書籍.
作者: alazer    時間: 2007-01-11 08:47
但是 a[4] = {1}; 這個倒不是把所有的數(shù)組元素賦值為1,只有第一個.
作者: wuye_chinaunix    時間: 2007-01-11 09:14
標(biāo)題: 回答樓上!
聲明時會初始化

在程序中就是賦值了。

聲明時語言提供的便利功能,沒什么可。。。的
作者: whyglinux    時間: 2007-01-11 13:18
>> char Array[8]={0};
>> 是給整個數(shù)組全部賦值為0,還是僅對第一個賦值為0?

首先澄清一個概念:上面不是進行賦值操作,是進行初始化。賦值和初始化是不同的(下面還會看到這一點)。

在定義數(shù)組對象的時候,作為一個整體,數(shù)組對象要么不被初始化,要么被初始化,不存一部分元素被初始化而另一部分元素沒有初始化的情況。

在用戶為數(shù)組指定初始化值的時候,不必為所有的數(shù)組元素提供初始化值,可以只提供前面 n 個元素的值(n>=0),其余的元素將被初始化為 0。

因此,char Array[8]={0}; 的含義是第一個元素按照用戶指定的值(0)進行初始化,其余的被初始化為 0。其結(jié)果就是整個數(shù)組被初始化為 0。char Array[8]={}; 是沒有提供任何初始化值,但是指定了數(shù)組初始化的情況,其結(jié)果和 char Array[8]={0}; 是等同的。

>> 但是 a[4] = {1}; 這個倒不是把所有的數(shù)組元素賦值為1,只有第一個

a[4] = {1}; 是賦值操作,但卻是非法的表達式,因為 {} 不是運算符。這里是混淆了賦值和初始化的概念。

int a[4] = {1}; 才是對數(shù)組進行初始化。其結(jié)果是:a[0] 被初始化為 1, a[1]、a[2]、a[3] 都被初始化為 0。

>> char Array[12][8] = {0};
>> 為何GCC會出警告?

應(yīng)該清楚的是:char Array[12][8] = {0}; 這樣的定義數(shù)組對象并進行初始化是合法的。GCC 對此發(fā)出警告是因為你在編譯中使用了 -Wmissing-braces(-Wall 中包含這個警告)參數(shù)。產(chǎn)生這個警告并不說明程序是錯誤的,但是你要注意提供的初始化值和元素的對應(yīng)關(guān)系是否正確。

要避免這個警告,不妨這樣對數(shù)組初始化:char Array[12][8] = {};
作者: zwylinux    時間: 2007-01-11 13:28
原帖由 langue 于 2007-1-10 18:55 發(fā)表


char Array[12][8] = {{0}};


這樣也不是對所有數(shù)組元素初始化一個特定值的方式
作者: ghostwwl    時間: 2007-01-11 13:28
全部為0 這個是c99的 方法
可能gcc不支持
作者: ghostwwl    時間: 2007-01-11 13:36
char p[256] = {p[255]=0};
這個是對對指定元素初始化 c99方法

[ 本帖最后由 ghostwwl 于 2007-1-11 13:55 編輯 ]
作者: zwylinux    時間: 2007-01-11 13:52
原帖由 ghostwwl 于 2007-1-11 13:36 發(fā)表
char p[256] = {p[256]=0};
這個是對對指定元素初始化 c99方法


這個溢出,呵呵
作者: ghostwwl    時間: 2007-01-11 13:55
樓上說得 對哦 應(yīng)該是 <256的 任意一個
作者: windy2335    時間: 2007-01-11 15:00
原帖由 mu_mu8309 于 2007-1-10 18:07 發(fā)表

僅對第一個賦值吧??

兄弟,,不好意思....是整個數(shù)組!
作者: xiaomdong    時間: 2007-01-12 12:35
全部賦值為0
作者: luyushuang    時間: 2007-01-12 12:48
a[4] = {1};它將數(shù)組中第一個元素賦值為1,由于剩下的元素沒賦值,會默認賦值為0,a[4]={0}是一樣的道理。
a[n][n]={1},在suse中會給出warnnig.
a[n][n]={{1}}是正確的,原因如上。
作者: ghostwwl    時間: 2007-01-12 16:44
gcc對c99支持不是很好的
作者: norlan    時間: 2007-01-13 00:02
原帖由 alazer 于 2007-1-11 08:47 發(fā)表
但是 a[4] = {1}; 這個倒不是把所有的數(shù)組元素賦值為1,只有第一個.


這是對的,所以對結(jié)構(gòu)初始化,我都有memset,這樣的代碼通用型更強
作者: happy1123    時間: 2007-01-14 13:34
原帖由 whyglinux 于 2007-1-11 13:18 發(fā)表
>> char Array[8]={0};
>> 是給整個數(shù)組全部賦值為0,還是僅對第一個賦值為0?

首先澄清一個概念:上面不是進行賦值操作,是進行初始化。賦值和初始化是不同的(下面還會看到這一點)。

在定義 ...


謝謝版主,又學(xué)到一些東西。發(fā)現(xiàn)自己用了好久的C,很多細節(jié)還是很模糊。
作者: bitzilla    時間: 2007-01-14 16:42
原帖由 langue 于 2007-1-10 18:55 發(fā)表


char Array[12][8] = {{0}};

以前還沒有用過這種初始化的方法呢,只知道一維數(shù)組的




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2