トップページ⇒tech
51コメント9KB

ポインタのポインタがわかりません!!

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
文字列のポインタはだいたい分かるのですが、
他の型ではどうしてそんな事をする必要があるのか分かりません!!
誰か教えて!!
0002デフォルトの名無しさんNGNG
2get

終了
0003 NGNG
あんまり無いね。
ポインタを別ルーチンで書き替えたい時、ポインタをポインタ渡しするから
ポインタのポインタになるなー。
0004デフォルトの名無しさんNGNG
その時になれば解るさ。
0005 NGNG
C/C++で、動的2次元配列作りたいなら、ポインタのポインタ使うね。

int **ppVector;
*ppVector = (int **)malloc(100);
for(int i=0;i<100;i++)(*ppVector)[i] = (int *)malloc(i);

テストしてないからエラー出るかもだけど、こんな感じね。

あと、Windowsのハンドルと言われてるものは、ぶっちゃけポインタの
ポインタ。
0006デフォルトの名無しさんNGNG
移動よろ。

C言語なら、俺に聞け! <11>
http://pc.2ch.net/test/read.cgi/tech/1009499565/
0007 NGNG
あ、荒れてるやん・・・
    ↓
C言語なら、俺に聞け! <11>
http://pc.2ch.net/test/read.cgi/tech/1009499565/
0008デフォルトの名無しさんNGNG
>>1
あなたには必要ありません。
0009デフォルトの名無しさんNGNG
リストやツリーとかはポインタ使うだろが。
配列でもできるが、そんなクソコードは逝ってよしだ。

つか、こんなことでいちいちスレ立てんな。
0010 NGNG
>>9
OSでは**使い放題だろ?
0011 ◆cplLXSGo NGNG
はー
0012デフォルトの名無しさんNGNG
(´-`).。oO(最近単発質問スレ多い)
0013デフォルトの名無しさんNGNG
ダブルポインタって言わない?
0014デフォルトの名無しさんNGNG
(double *)
0015デフォルトの名無しさんNGNG
関数にイリッフィベクタを渡すとき
0016デフォルトの名無しさんNGNG
ポインタのポインタのポインタがわかりません
0017デフォルトの名無しさんNGNG
ポインタのポインタのポインタのポインタの…(以下略)
0018デフォルトの名無しさんNGNG
>17
おぉ再帰
...いや、暴走?
0019 NGNG
>>16
それは動的3次元配列に使います。

>>17
それは動的・・・(以下略)
0020デフォルトの名無しさんNGNG
知らない間にすんなり使ってる時がある。
0021デフォルトの名無しさんNGNG
とりあえずポインタは偉大
0022ハァハァNGNG
ボインタソ
0023デフォルトの名無しさんNGNG
>>5
> あと、Windowsのハンドルと言われてるものは、ぶっちゃけポインタの
> ポインタ。

Macのハンドルが、ポインタのポインタではなかったかな?
Windowsのハンドルは、単なるユニークな32ビット整数ではなかったかと。
Windowsのハンドルを逆参照してもポインタに戻らないと思うよ。

0024マジレスNGNG
あのな、スレっていうのは何かテーマがあっていろんな立場の
奴らで話し合ったり、意見交換したりするために立てるものなんだよ。
それが何だ?お前の立てたこのスレはよ?
たかがお前の質問ごときで国中の奴らで盛り上がれとでも言うのか?
何様だ?お前は。
質問スレがあるだろうが、ボケが。
0025デフォルトの名無しさんNGNG
>>5
malloc(100)じゃなくて、malloc(sizeof(int **)*100)じゃないか?
ポインタが1バイトってことはないだろ。
0026デフォルトの名無しさんNGNG
もう、バカばっか。春だねえ。
0027デフォルトの名無しさんNGNG
sizeof(int*)とsizeof(int**)のサイズに違いはありまん
0028デフォルトの名無しさんNGNG
とりあえず、
sizeof(int*) = sizeof(int**) = sizeof(char*) = sizeof(long*) = sizeof(float*)
な
002928NGNG
>>27
おもっきしかぶったな。スマソ。
0030デフォルトの名無しさんNGNG
>>27
当たり前じゃない。
でも、malloc(100)だと100バイトしか取られないだろ?
003130NGNG
ちなみに俺の環境だとポインタは4バイトだから、100個のポインタを配列にいれるのなら、400バイト必要なんだが。
0032デフォルトの名無しさんNGNG
>>30
もう放っといてやれやホゲェ
0033デフォルトの名無しさんNGNG
ポインタって何スか?
0034デフォルトの名無しさんNGNG
・テキストファイルを全部読み込んで、動的メモリに確保
・指定行のデータを取得
・指定行のデータを改変(上書き)
・指定されたファイルに保存

 っていうクラスを作ろうとしたら、多分使うことになるかと。
(vector<CString>などは、(>>1は)使えないだろうと思うし・・)
0035終了NGNG
プログラム組むのにポインタは必須!
0036デフォルトの名無しさんNGNG
>>35
「プログラムを組むのに」じゃなくて「C/C++で組むのに」だろ?
0037デフォルトの名無しさんNGNG
その「ポインタ」は一般用法なんでねーのか?
0038デフォルトの名無しさんNGNG
>>37
ああ、うめぼしのことじゃないのか。。。
0039デフォルトの名無しさんNGNG
main()
{
int *p;

mem_p(p); // 誤 pは不定値のまま
mem_pp(&p); // 正 pは確保したメモリのアドレス
}

void mem_p(int *p){ p = new int; }
void mem_pp(int **pp){ *pp = new int; }
0040デフォルトの名無しさんNGNG
void mem_p(int *&p){ p = new int; }
ふつうはこう。
0041デフォルトの名無しさんNGNG
void mem_p(int *p){ p = new int; } 引数の*p = mainの*p

void mem_pp(int **pp){ *pp = new int; } 引数の*pp = mainの&p
004239=41NGNG
>>40
>>int *&p
これって参照ポインタ?

な〜る
確かにそちらのほうが明確だね
一つ賢くなりましたです
0043デフォルトの名無しさんNGNG
void** は移植性を考えると使えないんですか?
何でなのでしょうか?教えてください。

この間から気になって眠れません。
0044デフォルトの名無しさんNGNG
んなこたぁない
0045デフォルトの名無しさんNGNG
むしろ可読性に問題あり
0046デフォルトの名無しさんNGNG
>この間から気になって眠れません。
俺は君が何日前から寝てないのかが気になって眠れそうにないよ。
0047デフォルトの名無しさんNGNG
IUnknown *pUnk;
Hoge->QueryInterface(IID_HOGEHOGE,(void**)pUnk);
な罠。
0048デフォルトの名無しさんNGNG
このスレ育てるの?(w

0049デフォルトの名無しさんNGNG
むしろ、一人歩きかも。
0050デフォルトの名無しさんNGNG
ボインタのポインポインがわかりません。
*って乳輪ですか?それとも肛門ですか?
0051デフォルトの名無しさんNGNG
* * なら乳輪
* なら肛門
■ このスレッドは過去ログ倉庫に格納されています