4 回答

TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊
以State[0][0]的地址為起點,將其后的16個字節(jié)設(shè)置為0。如果State數(shù)組被分配了連續(xù)的空間,相當(dāng)于把2維數(shù)組State的前16個字節(jié)設(shè)置為0;比如State是一個int[2][5],因為int是4字節(jié),所以該語句就是將State[0]中的前4個int設(shè)為0;如果State是int[2][3],就是將State[0]全部設(shè)為0,并將State[1]的第一個int設(shè)為0。

TA貢獻(xiàn)1796條經(jīng)驗 獲得超4個贊
memset(str,0,80)是用0來初始化以地址str開始的80個連續(xù)單元..
memset函數(shù)具體的用法是:
memset() 函數(shù)常用于內(nèi)存空間初始化。如: char str[100]; memset(str,0,100); memset用來對一段內(nèi)存空間全部設(shè)置為某個字符,一般用在對定義的字符串進(jìn)行初始化為‘ ’或‘\0’;例:char a[100];memset(a, '\0', sizeof(a)); memcpy用來做內(nèi)存拷貝,你可以拿它拷貝任何數(shù)據(jù)類型的對象,可以指定拷貝的數(shù)據(jù)長度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),會造成b的內(nèi)存地址溢出。 strcpy就只能拷貝字符串了,它遇到'\0'就結(jié)束拷貝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串長度(第一個‘\0’之前)是否超過50位,如超過,則會造成b的內(nèi)存地址溢出。

TA貢獻(xiàn)1853條經(jīng)驗 獲得超9個贊
State是個數(shù)組,
這個命令是從State數(shù)組的首地址開始,以數(shù)值0('\0')填充16個連續(xù)的字節(jié)。
可以稱作這塊內(nèi)存的初始化。

TA貢獻(xiàn)1811條經(jīng)驗 獲得超4個贊
&State[0][0]是獲取二維數(shù)組第一行的第一列的元素的地址.這很別扭.直接
memset( (void*)State,0, 16 )就可以了.從state開始的地址的前16個字節(jié)設(shè)置為零.
添加回答
舉報