看板 C_and_CPP 關於我們 聯絡資訊
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