亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

聲明數組時出錯 >> int arr[];在 C++ 中(盡管在 Java 中有效)?

聲明數組時出錯 >> int arr[];在 C++ 中(盡管在 Java 中有效)?

肥皂起泡泡 2023-05-10 16:59:14
為什么我們不能int arr[];像 Java 那樣在 C++ 中聲明未指定大小的數組?當我嘗試時,它給出了一個錯誤。不使用就可以嗎std::vector?附言。更新 8 月 3 日 11.24 pm IST 向所有我對此感到困惑的人道歉int arr[]={1,2,3,4,5};據我所知這是否意味著我們不能在 C++ 中聲明一個數組而不像上面那樣初始化它?, 如果我錯了請糾正我..
查看完整描述

4 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

“為什么我們不能聲明未指定大小的數組”——因為 C++ 語言標準說你不能?!跋?Java”——因為 C++ 不是 Java。不同的語言有不同的設計目標/標準以及不同的歷史。如果您想要 C++ 中的動態數組,可以使用的工具是std::vector. 數組在 C++ 中始終是靜態大小的(甚至更好std::array)。它需要知道預先分配多少空間(發生在編譯時,而不是運行時)。這對性能很重要,因為您知道它以后不會進行動態重新分配。在某些情況下,它還可以讓您了解對象的確切內存布局和大小,這可能很重要。

您真的無法像您嘗試的那樣比較語言。每個都必須自己學習。你不能真的把東西從一個轉移到另一個——即使它看起來很相似。


查看完整回答
反對 回復 2023-05-10
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

在 C++ 中,我們必須在聲明數組時指定數組的大小。這是 C++ 創建者的設計選擇,可追溯到其 C 起源。

另一方面,在 Java 中,我們只用 聲明對數組對象的引用int arr[]。然后我們為數組分配內存,比如arr = new int[10]指定它的大小。

在 Java 中,數組是對象,就像 String 或 ArrayList 一樣。但在 C++ 中情況并非如此。


查看完整回答
反對 回復 2023-05-10
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

Java 和 C++ 在這方面實際上非常相似,只是語法略有不同。


爪哇:


// declare a reference to an array of integers

int[] arr;

// allocate an array of 10 integers on the heap and store a reference in arr

arr = new int[ 10 ];

C++:


// declare a pointer to an integer, set it to null to be safe

int* arr = nullptr;

// allocate an array of 10 integers on the heap and store a pointer to it in arr

arr = new int[ 10 ];

Java 通過在您使用完數組一段時間后對其進行垃圾回收,從而使事情變得更容易一些。你幾乎可以在 C++ 中使用std::unique_ptr<int[]>or得到它std::shared_ptr<int[]>?;蛘遱td::vector<int>通常是更好的選擇。


您可能感到困惑的地方是 C++ 在堆棧上分配數組的能力。這些數組必須是在編譯時聲明的固定大小。Java沒有這個特性,只有原始類型和引用分配在棧上。


您還可以將這些固定大小的數組聲明為對象成員,然后將其存儲為對象的一部分。同樣,Java 沒有此功能,對象只能包含對數組的引用。


查看完整回答
反對 回復 2023-05-10
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

簡而言之,它需要知道要分配多少內存。

std::vector 會在幕后為您重新分配內存,如果您要實現自己的 std::vector,您可以先聲明一個特定大小的數組,并在需要調整任何內存時使用。


查看完整回答
反對 回復 2023-05-10
  • 4 回答
  • 0 關注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號