1

変数を定義する場合:
int (**a)[30];
それはポインターです。このポインターは、30 int の配列を指すポインターを指します。
それを宣言または初期化する方法は?

int (**a)[10] = new [10][20][30];
int (**a)[10] = && new int[10];  

すべてが機能しません。

4

3 に答える 3

0

書くことで何を得ることを期待しています&(&var)か?これは と同等ですaddress of address of a block of memory*コード内の の数を満たすためだけにこのようなことを行うのは意味がありません。

考えてみてください -どうすればアドレスのアドレスを取得できますか? まったくの運や奇妙な言語のトリックによってなんとかそれができたとしても、それが機能する方法はありません。

于 2013-06-13T17:23:20.010 に答える
0

現状の質問に対する答えが必要な場合は、次のようなことができます。

int a[30];
int (*b)[30] = &a;
int (**c)[30] = &b;

しかし、他の人がコメントしているように、それはあなたが望むものではないでしょう. おそらく、根本的な目標を明確にする必要があります-人々はそうでなければ推測することしかできません.


MooingDuck の発言に続いて、実際には typedef なしでそれを行う方法を確認できますが、直接ではありません。

template <typename T>
T *create(T *const &)
{
    return new T;
}

int (**a)[30] = create(a);

きれいじゃないけど。

于 2013-06-13T16:28:43.767 に答える