作者 主題: array 宣告  (閱讀 5710 次)

0 會員 與 1 訪客 正在閱讀本文。

vicent

  • 懷疑的國中生
  • **
  • 文章數: 33
    • 檢視個人資料
array 宣告
« 於: 2003-05-31 08:57 »
將我寫程式發現的一些心得得大家分享...
-----------------------------------------------------

陣列(array)資料經過宣告後,必須其初始值reset為0,
結構(structure)也一樣,必須其初始值reset為0,

ex.

unsigned char buf[BUFSIZE];
bzero( buf, BUFSIZE);

因為陣列(array)與結構(structure)都只會保留記憶體給經宣告的合法變數,
但是其初始值(initial value)為亂碼,
不像一般整數(integer)或字元(char),初始值(initial value)為0,

但是若利用malloc等函數要來的記憶體,
ex.
unsigned char *buf;

buf = malloc(BUFSIZE);

buf的資料都為0,就可以不用作
bzero( buf, BUFSIZE);
的動作了

osdai

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
array 宣告
« 回覆 #1 於: 2003-05-31 14:38 »
若要將一陣列的初值設為0這樣好像就可以了
char ch[size]={0};
還有  整數(integer)或字元(char)  的初值好像也不是0

AD

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
array 宣告
« 回覆 #2 於: 2003-05-31 19:32 »
樓上的說的對喔
除非是 global 的變數才能保證它的初始值為 0 吧

一般的 local 變數或是從 heap 要來的記憶體
其內容應該都是之前所殘存的

ps:如果要將 structure or array 的內容清為 0 可以用

void *memset(void *s, int c, size_t n);

ex:
代碼: [選擇]

struct Blah
{
    //blah...
};
Blah blah;
memset( &blah, 0, sizeof(Blah) );