2017-07-31 95 views
-2

我想只採用偶數組索引號(包括0)(用戶輸入的數組),並只使用那些元素而不是奇數::: C++ 我的代碼: n =沒有。元素的用戶的進入 一個是進入了用戶的數組編號SC++,指針和運算符

for(int i=0;i<n/2;i++){     
    arr[i] = *(a+2i); 
} 

錯誤:

error: invalid operands of types 'int*' and 'complex int' to binary 'operator+'

arr[i] = *(a+2i); 

如何解決,什麼意思呢?

+1

如果你想乘2我,你必須寫2 *我不2i中 –

+2

'A + 2i'確實是一個[複數](https://en.wikipedia.org/wiki/ Complex_number)和C++ 14 [用戶定義文字](http://en.cppreference.com/w/cpp/numeric/complex/operator%22%22i)。 C++沒有像數學那樣的隱式乘法。 –

+1

在不相關的註釋中,對於任何指針「p」和索引「i」,表達式*(p + i)'等於'p [i]'。也就是說,在你的情況下,你可以通過寫'a [2 * i]'而不是'*(a + 2 * i)'來保存幾個按鍵。 –

回答

1
*(a+2i); 

無效(和看起來像形式a+jb的虛數),其誤差的含義。

你的意思是肯定*(a + 2*i);因爲編譯器可以

如果沒有墊子運營商缺少,轉而解釋是,墊操作相關聯作爲一個虛數。

這是因爲2i不會自動推斷爲2*i

0

你並不需要使用指針運算得到你想要的結果。

for (int i = 0; i < (n/2); ++i) 
{ 
    arr[i] = a[2 * i]; 
} 
+1

它仍然是指針算術,它只是在編譯器背後發生。這並沒有真正回答這個問題。 –