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)); 

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

学习不易,诸君共勉!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值