作者jijuan (雞卷)
看板C_and_CPP
標題[問題] 請問一下用memset初始化struct的問題
時間Mon Dec 14 19:01:36 2009
typedef struct {
int iAge;
}s_Test, *sp_Test;
int main(void) {
s_Test sTest;
sp_Test spTest;
memset(&sTest,0,sizeof(s_Test));//OK
memset(spTest,0,sizeof(s_Test));//FAIL
sTest.iAge=999;
sptTest->iAge=1000;
cout << sTest.iAge << endl;//OK
cout << sptTest->iAge << endl;//FAIL
system("pause");
return 0;
}
因為memset是定義成這樣
void * memset ( void * ptr, int value, size_t num );
那如果是一個 struct pointer 的話,該怎麼用memset初始化呢?
--
跟我同個年代看球的人
有兩個最讓我們覺得惋惜
一個叫Grant Hill
一個叫Anfernee Hardaway
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.249.2.10
→ james732:sp_Test spTest = &sTest; 要先讓它指向一個合法的空間 12/14 19:06
→ james732:參看置底文十誡第五 12/14 19:07
推 VictorTom:sp_Test只是一個pointer, 要初始化為0的方法其實是 12/14 19:09
→ VictorTom:sp_Test = NULL; // XD 12/14 19:09
→ VictorTom:memset(spTest,0,sizeof(sp_Test)); // 應該也行XD 12/14 19:10
→ VictorTom:memset(&spTest,0,sizeof(sp_Test)); // 這個才對Orz 12/14 19:10
→ VictorTom:不過, 1~2F j大說的還是重點, 指標的用法請注意:) 12/14 19:11
→ ilway25:sizeof(sp_Test) ?? 12/14 21:24
推 ledia:sizeof(sp_Test) 就是看 sp_Test 型別的大小, compile time 12/14 21:57