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) );


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM