zoukankan      html  css  js  c++  java
  • 数组初始化问题calloc和memset+malloc

    calloc = malloc+memset 但是推荐calloc
    calloc分配内存,也初始化
    malloc只分配内存,不初始化
    memset只能用来初始化


    在刷题中对数组初始化
    int arr[10] = {0}//10可能是个很大的值,提交不对
    要么利用循环进行初始化
    要么用calloc或者malloc+memset
    推荐使用calloc


    calloc 在stdlib.h的头文件中
    calloc原型

    void *calloc(size_t nitems, size_t size),
    nitems -- 要被分配的元素个数,
    size -- 元素的大小。

    // 用法 动态分配一个数组,数组有10个int型元素,每个都是0
    int *arr = (int *) calloc(10, sizeof(int))


    memset在string.h中
    void *memset(void *str, int c, size_t n)
    str -- 指向要填充的内存块。
    c -- 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。
    n -- 要被设置为该值的字节数。


    用法
    int *arr = new int[10]; // 动态
    或者
    int arr[10]; //静态分配数组
    // 将数组所有元素初始化为0
    memset(arr,0,sizeof(int)*10);

    int *arr2 = (int *)malloc(sizeof(int)*10);// 动态分配10个int的空间
    memset(arr2, 0,sizeof(int)*10); // 给10个int初始化为0

  • 相关阅读:
    To do list
    2020 上半学期比赛记录
    板子
    Project Euler 1~10 野蛮题解
    卡常火车头
    防止unordered_map 被卡方法
    2019 香港区域赛 BDEG 题解
    2019徐州区域赛 ACEFM 题解 & pollard-rho & miller-rabin & 求出每个子树的重心 板子
    BST-splay板子
    ZJOI2017(2) 游记
  • 原文地址:https://www.cnblogs.com/xiaokang01/p/12380119.html
Copyright © 2011-2022 走看看