我完全修改了我的問題,因爲我對自己想要做的事情有了更好的瞭解。
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
const int max_rows = 10;
const int max_cols = 10;
int *test = new int[max_rows * max_cols];
for(int i = 0; i < 100; i++){
test[i] = 1 + (rand() % 100);
}
for(int i = 0; i < 100; i++){
cout << "#" << i << " " << test[i] << endl;
}
int *b = &test[0];
cout << *b << endl;
int *x = b + (i * sizeof(int) * max_cols) + (sizeof(int) * j);
cout << *x << endl;
return 0;
}
測試應該是我的二維數組。
* x應該包含地址test[i][j]
(假設我在我的代碼中有cin >> i和cin >> j)。
其中i是行,j是我想要的列。
但它似乎並沒有給我正確的地址。除非我很傻,讀錯了。
這是我被告知要解決問題的方式。
你不需要'*的sizeof(int)的'。 C的指針運算會隱式地執行 – Niki 2010-12-19 09:17:53
您已編輯了代碼,但以下文本不再正確,因爲如果您有一維數組,則不存在'test [i] [j]'。 – wimh 2010-12-19 10:44:34
你看過[Boost Multidimensional Array](http://www.boost.org/doc/libs/release/libs/multi_array/doc/user.html)庫嗎? – 2010-12-19 14:52:16