作者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
1F:→ james732:sp_Test spTest = &sTest; 要先让它指向一个合法的空间 12/14 19:06
2F:→ james732:参看置底文十诫第五 12/14 19:07
3F:推 VictorTom:sp_Test只是一个pointer, 要初始化为0的方法其实是 12/14 19:09
4F:→ VictorTom:sp_Test = NULL; // XD 12/14 19:09
5F:→ VictorTom:memset(spTest,0,sizeof(sp_Test)); // 应该也行XD 12/14 19:10
6F:→ VictorTom:memset(&spTest,0,sizeof(sp_Test)); // 这个才对Orz 12/14 19:10
7F:→ VictorTom:不过, 1~2F j大说的还是重点, 指标的用法请注意:) 12/14 19:11
8F:→ ilway25:sizeof(sp_Test) ?? 12/14 21:24
9F:推 ledia:sizeof(sp_Test) 就是看 sp_Test 型别的大小, compile time 12/14 21:57