2017-07-31 115 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

它仍然是指针算术,它只是在编译器背后发生。这并没有真正回答这个问题。 –