我试图增加以下内容:C++算术具有指针
我有双指针数组调用A.我有双指针的另一个阵列称之为B,以及我有一个unsigned int称之为C.
所以我想做的事:
A[i] = B[i] - C;
我怎么办呢?我做了:
A[i] = &B[i] - C;
我不认为我正确地做到了这一点。
编辑:我想要做的是,在双指针数组的索引i处取值,并从中减去一个int,然后将该结果存储到索引为i的双指针数组中。
我试图增加以下内容:C++算术具有指针
我有双指针数组调用A.我有双指针的另一个阵列称之为B,以及我有一个unsigned int称之为C.
所以我想做的事:
A[i] = B[i] - C;
我怎么办呢?我做了:
A[i] = &B[i] - C;
我不认为我正确地做到了这一点。
编辑:我想要做的是,在双指针数组的索引i处取值,并从中减去一个int,然后将该结果存储到索引为i的双指针数组中。
你的问题是有点不清楚,但如果A和B是指针翻番的阵列和你想改变每个指针与固定量的准确C,那么,对于A中的每个元素:
一[i] = B [i] - C;
应该这样做。 & B [i]接受指针本身的地址,所以它是完全不同的东西。
示例代码:
对(INT I = 0;我< size_of_A; ++ⅰ) A [1] = B [Ⅰ] - ℃;
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库来简化它。)
你想要的是:
&(*B[i] - C)
但我认为你不能直接把它分配给A [i]。首先你必须创建一个临时(T)的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];
}
你想用A = B-C来完成什么?减去不同数组中的指针是没有意义的(也是未定义的行为) – leeeroy 2010-03-20 21:02:34
而不是说“所以我想要做的:(代码片段,显然不会做你想做的)”,你应该用英语解释你想要的。我们无法知道您希望该代码片段与您的编译器做什么不同。 – 2010-03-20 21:29:01