【发布时间】:2014-02-19 14:54:57
【问题描述】:
下面几行有什么不同:
char myname[512]; -- created a character array and wants to memset it.
下面两行有什么不同吗?
memset (&myname, 0x00, sizeof(myname));
memset (&myname, 0, sizeof(myname));
我很确定两者都会使 myname 数组无效。
【问题讨论】:
-
不,没有区别。
-
0是0,与基数无关。 -
事实上,从技术上讲,
0被解析为八进制常量,而不是十进制常量。 -
另外,您可能需要确保
sizeof(myname)为您提供所需的价值... -
或者干脆写成
char myname[512]={};或使用std::fill,当你决定用不是char的类型初始化0以外的东西时,这也可以工作。memset令人讨厌的地方在于,它看起来有效,而实际上它只是在一个特殊情况下巧合地“有效”。