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

  • 相关阅读:
    Java8新特性
    搜索解决方案 -- ElasticSearch入门
    插入排序
    单点登录系统CAS入门
    快速排序
    选择性排序
    冒泡排序
    springcloud入门
    消息中间件 -- RabbitMQ
    ActiveMQ中消息的重发与持久化保存
  • 原文地址:https://www.cnblogs.com/xiaokang01/p/12380119.html
Copyright © 2011-2022 走看看