2015-10-21 50 views
0

嗨,我正在學習C++入門,並有一個簡單的問題。請幫助我。所以我知道「int * p =(* q)[10]」其中p是指向10數組的指針。問題是,在函數定義中:「void print(int(* q) [10])「這個指針是一個參數。我怎麼能得到那個指針的副本。那會是「int * p = q」嗎?獲取指向C++數組的指針的副本

我在技術上不知道如何在C++中測試我的正確性。

由於

+0

爲什麼不使用int * p = new int [10]'爲初始化數組和10個int值? –

+1

@DanilProkhorenko因爲新不好。 –

+0

@NeilKirk爲什麼?或者你是什麼意思? –

回答

1
int (*q)[10] 

聲明q作爲指針爲10個int列數組。只有數組衰減指向其基礎類型的指針,但指向數組的指針不會衰減指向基礎類型的指針,因此嘗試int* p = q;將導致編譯錯誤。你需要的是

int (*p)[10] = q; // copies the pointer q to p 
+0

oic,是啊dat是有道理的。謝謝!所以我想要訪問這個數組中的元素,我可以使用(* p)[i]對不對? – milanow

+0

@ user3577115是的,這是正確的。 '* p'的類型是數組'int [10]',所以'(* p)[i]'(或'*(* p + i)')是它的第i個元素。 – vsoftco

+0

我嘗試了「*(* p + i)」,當然它有效。但正如我的理解,「*」比「+」具有更高的優先級,所以「* p + i」實際上是一個數組加上一個int?它有這樣的過載功能嗎? – milanow