トップページ⇒tech
38コメント11KB

ポインタのポインタのポインタ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
ポインタのポインタのポインタってどんなことに使うの?
0002デフォルトの名無しさんNGNG
3次元配列を動的に確保する時とか。
0003名無しNGNG
そうまでして変数や文字、文字列を格納する意味ないと思うんだが・・・。
0004デフォルト名無しNGNG
ポインタのポインタを指す為に使用します。
ということで

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜了〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
0005デフォルトの名無しさんNGNG
a->b->c みたいな。C++ではよくある事。
0006デフォルトの名無しさんNGNG
>>5
そういう意味でいうならば、Cでも茶飯事。

#boehmGC良いよ。いつfreeするからとかのウザイことを
#考える必要がなくなる分だけ、安心してポインタ使ったデータ構造を
#バリバリ組めるから。
0007デフォルトの名無しさんNGNG
ぽいんたのぽいんたのぽいんた♪
歌みたい(w
0008デフォルトの名無しさんNGNG
ポインタのポインタのポインタのポインタってどんなことに使うの?

0009デフォルトの名無しさんNGNG
ホルモンのホルモンのホルモンってあったね。
0010デフォルトの名無しさんNGNG
>8
つまりな。
int *a;
int *b;
int *c;
とあった場合、
b=c;
a=b;
aがポインタのポインタのポインタ。Cのアドレスを指す値をBに代入するとポインタのアドレスを指すポインタの値がBに代入されてそれをAに代入すれヴぁポインタのポインタのポインタになるだろゴルぁ。
そういうことだ。
0011>10NGNG
コードが説明とあってないぞ。
001210NGNG
>11
お前たぁ頭の出来が違うポン。
0013デフォルトの名無しさんNGNG
>>10
あほ発見
0014デフォルトの名無しさんNGNG
int*************************** hoge;
0015デフォルトの名無しさんNGNG
int ***a;
にしないとダメでないの?
001610NGNG
まだ起きてるのか?
0017デフォルトの名無しさんNGNG
int****************************************************************************************************************************************************************** hoge;
0018デフォルトの名無しさんNGNG
文字列への配列を引数で出力させたいときに使った事もあるな。
0019デフォルトの名無しさんNGNG
>>13
ネタでしょ。
>>1
文字列の配列の先頭ポインタの配列へのイテレータで使ったな。
0020デフォルトの名無しさんNGNG
10=19
0021デフォルトの名無しさんNGNG
>>20
だからぁ、ネタでしょ。
0022デフォルトの名無しさんNGNG
>>17
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタ
0023デフォルトの名無しさんNGNG
>>17のように書いても、エラー出しませんね(BCC)。
そんな風に書くのかどうかは知りませんが。
ポインタのポインタもポインタだから、ポインタのポインタのポインタも
int** hogeeeeとかで使うのではないかと思っていたのですが。
0024デフォルトの名無しさんNGNG
「ポインタのポインタのポインタ」って変
「ポインタへのポインタへのポインタ」でしょ。

それから12個までが限界だよ。> 23
0025デフォルトの名無しさんNGNG
>>24
限界なんてあるのか?VBじゃあるまいし(笑)

規格に限界が書かれていない、というだけの話じゃなくて、
あんなもんC本来の再帰的な文法を
素直に再帰的に処理するコンパイラなら
(メモリの許す限り)無限に出来て当然のはずで、
そうでないコンパイラ実装は捨てたいね。

0026デフォルトの名無しさんNGNG
>>25
X3010 の 「6.5.4 宣言子」のところに書かれてある。

処理系は少なくとも12個までは処理できなくてはならない、
というようなことが書かれているので実際のコンパイラは
無限にできるんだろう。

>そうでないコンパイラ実装は捨てたいね

でも12個もできれば十分。

ちなみに12個いうのは配列や関数を合わせたもので、
typedefを介して分けて書いてもこれを増やすことはできない。

char ******a[1][2][3][4][5][6]; /* 限界 */
0027デフォルトの名無しさんNGNG
>1
メイン関数でファイルポインタの配列FILE *fp[10]を宣言して、それを別の関数でfopen()したいとき。
メインでポインタ変数の配列を宣言して、それを別の関数でmalloc()するときも同じ。

0028デフォルトの名無しさんNGNG
>>26
げ!そんなこと書いてあったのか。
気づかなかった。ごめそ。撤退する。

でも12もあればどうせ足りるってのは賛同。
002910NGNG
配列の実体渡したいときって、メンバとして含んでる構造体のポインタを渡さないとだめだっけ?
0030デフォルトの名無しさんNGNG
>>26
その数「12」の根拠(なぜ12なのか)って知ってる?
0031デフォルトの名無しさんNGNG
>>30
知らない。
考えたこともなかった。何故12なの?
0032デフォルトの名無しさんNGNG
プ
0033デフォルトの名無しさんNGNG
炭素に由来してるんだよ。
003430NGNG
>>31
私に聞き返さんでくれ。私も知らんのよ。
でも「12」ってやたら中途半端だと思わない?
0035デフォルトの名無しさんNGNG
>>34
1ダース=12
別に中途半端な数でもないけど
003631NGNG
>>34
謎だな。
規格つくった連中だけが知っている。
0037デフォルトの名無しさんNGNG
委員A「8じゃ少ない感じ?」
委員B「16じゃ多すぎると思われ」
委員C「じゃあ間とって12でいいか。」
0038>29NGNG
そだね。
■ このスレッドは過去ログ倉庫に格納されています