这个问题一直困扰了我很久, 我向来都用 for 来控制置 - 1; 因为我不会用 memset(つ﹏) 我是个蒟蒻. 今天终于学会了一点皮毛, 赶紧记录一下
方法一:
简单粗暴, 快捷有效. for 循环一点点的置 1, 这个方法一直有效, 没有限制条件, 除非你不知道大小.
方法二:
建立数组的时候同时完成初始化, 如果是静态创建数组那么只能将数组初始化为 0;
1 int arr[10] = {0};
如果是动态创建数组的化就可以用 stdlib 里的 calloc 进行内存的动态分配 , 开辟空间后默认置 0,
不过方法二只能置 0.
方法三:
用 string 里的 memset 函数来处理, 但由于其是对每一个字节赋值的所以拥有四个字节的 int, 只能 past, 但是因为按字节赋值对 0 和 - 1 没有影响所以可以用来置 0 或 - 1;
为什么 0 和 - 1 可以呢, 因为 - 1 的 BCD 码为 32 个 1,0 呢则为 32 个 0, 所以截取成虽然是按字节存写的但是 int 读取时都是相同的值所以无所谓了.
1 就别想, 它的 BCD 码是 31 个 0 一个 1...... 这个误差, 能飞到天上去.
1 memset(arr, (-1), sizeof(arr));
大概就是酱紫,(因为只会这些, 只能写道这里了)
学习不易, 诸君共勉!
来源: http://www.bubuko.com/infodetail-3345567.html