zoukankan      html  css  js  c++  java
  • LeetCode做题笔记(4)——error: variable-sized object may not be initialized|

    本篇文章总结了在做LeetCode题目645时遇到的问题,主要是可变长数组的初始化问题。

    645. 错误的集合

    题目类型

    数组

    做题总结

    1. 每一次遍历可以同时做多件事情,例如本题在查找重复的时候也同时查找丢失,即for循环中是if-if-if类型,而不是if-elseif-else类型。
    2. 一套算法可能无法直接将题解出来,有是需要专门应对一些特殊情况,如本题中1缺失或n缺失导致算法找不到缺失值的情况。
    3. 使用变量定义数组容量时,不能同时进行初始化!!!想要定义一个数组用以统计每个数字出现的次数,这时就需要根据参数numsSize来决定数组容量,但使用int counts[numsSize + 1] = { 0 };时,系统报错:error: variable-sized object may not be initialized,即variable-sized数组可能不会被初始化!实际上声明int counts[numsSize + 1];并没有问题,问题在于同时进行的初始化!这个问题属于C语言规定吧,如果想要初始化,则必须在声明之后进行。其实比较好的做法还是动态内存分配:
    int *counts = (int *) malloc( (numsSize + 1) * sizeof(int) );
    memset( counts, 0, (numsSize + 1)*sizeof(int) );
  • 相关阅读:
    CF446DDZY Loves Games【高斯消元,矩阵乘法】
    PHP操作MongoDB数据库
    PHP linux spl_autoload_register区分大小写
    win7 64位安装redis 及Redis Desktop Manager使用
    svn的搭建
    php 扩展 redis
    CI reids 缓存
    拿起键盘写下我的第一封博客
    自我介绍
    课程目标
  • 原文地址:https://www.cnblogs.com/uestcliming666/p/12751229.html
Copyright © 2011-2022 走看看