簡體   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