C语言数组的所有元素初始化成相同的值

  这个问题一直困扰了我很久,我向来都用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)); 

 

  大概就是酱紫,(因为只会这些,只能写道这里了)

 

学习不易,诸君共勉!

posted @ 2019-12-23 07:40  秦_殇  阅读(4293)  评论(0编辑  收藏  举报