繁体   English   中英

带指针的C ++算术

[英]C++ arithmetic with pointers

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

我有一个双指针数组称为A。我有另一个双指针数组称为B,而我有一个无符号的int称为C。

所以我想做:

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

我该怎么做? 我做了:

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

我认为我没有正确执行此操作。

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

您的问题尚不清楚,但是如果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;

C ++没有简单的映射语法,您要么

(1)使用循环

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

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

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

(可能有一个Boost库来简化此过程。)

您想要的是:

&( *B[i] - C )

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

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];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM