ページ 11

ポインタのポインタへアクセスする方法

Posted: 2009年3月27日(金) 08:23
by MNS
ポインタのポインタについて質問です。
たとえば、
struct TMP
{
	int tmp;
};
という構造体があるとします。
ここに、
TMP *ptmp;
というポインタがあります。
そして、
TMP** Reptmp()
{
	return &ptmp;
}
という、ptmpのアドレスを返す関数があるとします。

このとき、Reptmp()がポインタを返す関数なら、
Retmp()->tmp
のようにアクセスすることが出きるのですが、
Reptmpがポインタのポインタであるため、どのようにアクセスすればいいのか分かりません。
どなたか回答お願いします。

Re:ポインタのポインタへアクセスする方法

Posted: 2009年3月27日(金) 08:45
by Blue
TMP** pp = Retmp();
TMP* p = *pp;
int n = p->tmp;

であるから、

int n = (*Retmp())->tmp;

ということになります。

Re:ポインタのポインタへアクセスする方法

Posted: 2009年3月27日(金) 11:12
by TOMONORI
Reptmp()からの戻り値をいったん何らかの変数に格納するのも手だと思います。

Re:ポインタのポインタへアクセスする方法

Posted: 2009年3月27日(金) 12:39
by MNS
>Blueさん
やり方が悪いのか、なぜか構文エラーになってしまいますね・・。
回答ありがとうございます。

>TOMONORIさん
仰られた方法で出来そうです。
どうもありがとうございました。