• C/C++ 数组元素全清零实现


    总结

    • 全局变量数组未初始化,则其默认值全为0.
    • 局部变量数组未初始化,则其默认值随机,需要手动清零。
    • 数组初始化为空最简单。

    PS:关于所用函数的解析

    一、全局变量数组

    1 #include <stdio.h>
    2 int a[100];
    3 int main()
    4 {
    5     printf("%d ", a[0]);
    6     //0
    7     return 0;
    8 }

    自动为0,所以直接使用就ok。

    二、局部变量数组

    1.垃圾值

    1 #include <stdio.h>
    2 int main()
    3 {
    4     int a[100];
    5     printf("%d ", a[0]);
    6     //-858993460
    7     return 0;
    8 }

    2.最简单:初始化为空

    简单到哭了QAQ

    int a[5] = {};

    字符数组都行:

    1 char buff[1000] = {};
    2 char buff[1000] = "";

    3.memset()

    (1)头文件

    C:#include<string.h>

    C++:#include<cstring> or #include<string.h>

    (2)函数原型

    void *memset(void *s,int c,size_t n)

    作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。

    参数:s代表数组名,c代表要设置的值,n代表内存空间。

    注意:第三个参数表示内存空间,而不是元素个数,内存空间=元素个数*每个元素所占空间。

    1 int a[5];
    2 memset(a,0,sizeof(a));
    3 for(int i=0;i<5;i++)
    4     cout<<a[i]<<' ';
    5 //0 0 0 0 0

    (3)局限

    一般来说用0或-1初始化,别的值会发生意想不到的错误

    1 int a[5];
    2 memset(a,1,sizeof(a));
    3 for(int i=0;i<5;i++)
    4     cout<<a[i]<<' ';
    5 //16843009 16843009 16843009 16843009 16843009
    6 第二个参数c的值的范围是0x00-0xff

    意义:如memset(s,1,n),c就是0x01,c是int型,四个字节(0x01010101),转化成十进制就是1643009

     1 int a[5];
     2 cout<<0x02<<' '<<0x02020202<<endl;
     3 memset(a,2,sizeof(a));
     4 for(int i=0;i<5;i++)
     5     cout<<a[i]<<' ';
     6 //33686018 33686018 33686018 33686018 33686018
     7 int a[5];
     8 memset(a,0xff,sizeof(a));
     9 for(int i=0;i<5;i++)
    10     cout<<a[i]<<' ';
    11 //-1 -1 -1 -1 -1
    12 //0xffffffff就是-1

    4.fill()

    (1)头文件

    1 #include <iostream>
    2 using namespace std;

    (2)例子

    1 int a[10];
    2 fill(a,a+10,0);
  • 相关阅读:
    解释基于注解的切面实现?
    @Controller 注解?
    Spring由哪些模块组成?
    解释AOP模块 ?
    什么是Spring的依赖注入?
    自动装配有哪些局限性 ?
    在Spring框架中如何更有效地使用JDBC?
    @Autowired 注解?
    @Required 注解?
    解释AOP?
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/16613317.html
Copyright © 2020-2023  润新知