带指针的C ++算术

时间:2010-03-20 21:00:49

标签: c++ pointers pointer-arithmetic

我正在尝试添加以下内容:

我有一个双指针数组调用A.我有另一个双指针数组调用它B,我有一个unsigned int调用它C.

所以我想这样做:

A[i] = B[i] - C;

我该怎么办?我做了:

A[i] = &B[i] - C;

我不认为我这样做是正确的。

编辑:我想要做的是,取双指针数组索引i的值并从中减去一个int,然后将该结果存储到索引i的双指针数组中。

3 个答案:

答案 0 :(得分:4)

你的问题有点不清楚,但是如果A和B是指针加倍的数组,并且你想用固定数量的C精确地改变每个指针,那么,对于A中的每个元素:

A [i] = B [i] - C;

应该这样做。 & B [i]获取指针本身的地址,因此它完全不同。

示例代码:

for(int i = 0; i< size_of_A; ++ i) A [i] = B [i] - C;

答案 1 :(得分:0)

C ++没有简单的映射语法,你可以

(1)使用循环

for (int i = 0; i < 1482; ++ i)
  A[i] = B[i] - C;

(2)在std::transform中使用<algorithm>

#include <functional>
#include <algorithm>
...
std::transform(B, B+1482, A, std::bind2nd(std::minus<double>(), C));

(可能有一个Boost库来简化这个。)

答案 2 :(得分:0)

你想要的是:

&( *B[i] - C )

但我认为你不能将它直接分配给A [i]。首先,您必须创建一个double的临时(T)数组。

for(int i=0; i< size_of_B; i++){
  T[i] = *B[i] - C;
}
for(int i=0; i< size_of_T; i++){
  A[i] = &T[i];
}
相关问题