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

  • 相关阅读:
    JavaFx在macOS下的文字渲染Bug
    Java多接口同名方法的冲突
    旧技术的惯性
    一点思考(1)
    slisp:编译到JVM平台上的lisp方言
    Arcee:又一个 Parser Generator 轮子
    使用Java实现一门简单的动态语言
    Hello World!
    [NOI2008]奥运物流
    [IOI2005]Riv河流
  • 原文地址:https://www.cnblogs.com/xiaokang01/p/12380119.html
Copyright © 2011-2022 走看看