int main(){
int ar[50]={1};
//OR
int br[50];
memset(br, 1, sizeof(br));
return 0;
}
int ar[50]={1};
这只会将第一个元素设置为1
。其余的一切都会0
。
memset(br, 1, sizeof(br));
这将设置所有字节中br
为1。这是不一样的,因为所有的值设置为1
。之后的值是:
{16843009, 16843009, 16843009, 16843009, 16843009}
使用memset
时,你知道你真的需要它。它并不是为初始化数组而专门设计的,它只是将内存设置为特定值。
用C ++最好的方法?使用std::fill
或std::fill_n
。
例:
int array[5];
std::fill(array, array + 5, 8);
数组现在包含:
{8, 8, 8, 8, 8}
使用 fill_n
std::fill_n(array, 5, 99);
数组现在包含:
{99, 99, 99, 99, 99}
附带说明,更喜欢使用std::array
而不是c样式的数组。
尝试使用Godbolt:https://godbolt.org/z/DmgTGE
参考:
[1]:数组初始化
[2]:memset doc
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句