問題タブ [double-pointer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
22257 参照

c - Char ** の使い方と印刷

C ではchar **、一連の文字列を保持するために a を使用しています。

これが私のコードです:

データの入力方法がわかりませんc。適切な方法は何ですか?外部関数にあるため、3 つの印刷行を変更できません。

0 投票する
3 に答える
164 参照

c - 関数に渡されたときに二重ポインタに何が起こるか

c でポインターを使用して値渡しメカニズムがどのように機能するかを理解するのに苦労しています。ここに私の不自然な例があります...


私のmain関数では、次mallocの配列へのポインターですint

この操作により、メモリの 10 チャンクのブロックがサイドに設定され、各ブロックはポインターへのポインターを保持するのに十分な大きさであることを理解していintます。この 10 個のチャンクのブロックの先頭にあるポインターを受け取ります。

その二重ポインターを引数として取る別の関数があります。


コメントセクションをそのままにして、次のようにスペースを入力しようとするときはいつmallocでも:intmain

の呼び出しcheckMe後に反復するたびに、メモリが失われます。test2dArraymain

しかし、代わりにinmallocのスペースを(上記のコメント行のコメントを外して) 呼び出しを次のように変更すると、次のようになります。inttest2dArraymain

メモリの破壊がなくなりcheckMe、関数呼び出しの後で問題なく参照できるようになります。


checkMe値渡しされていることを理解してtest2dArrayいます。checkMe = malloc(sizeof(int *) * 10);これは、返されるアドレスが関数にコピーされることを意味すると思います。

中からスペースを取らないと、格納されているint *'sが失われる理由がわかりませんcheckMemalloctest2dArray

0 投票する
1 に答える
128 参照

c++ - ポインタの使用を理解する

こんにちは私はそれが機能している理由を理解するのに苦労しているコードに出くわしました、そして誰かが私を説明してくれれば幸いですここにコードがありますこれは実際にはここにある実際のコードの非常に単純化されたバージョンですhttp ://acts.nersc.gov/hypre/example10/ex10.cxx.html

つまり、ここでは、10行あり、各行が4x4行列であるelemStiff配列の値を初期化して入力します。

私にとって非常に奇妙なのは、コードがdouble ** A =elemStiff[i]の助けを借りてelemStiff配列のエントリを埋めることです。

私が最初に見たとき、それはエラーを与えるでしょうが、それは動作します!。Aに渡された値は、elemStiff配列で同時に渡されますが、なぜそれが機能するのかわかりません

ありがとうございました

0 投票する
1 に答える
1075 参照

objective-c - Objective-C での 2 次元配列構文を使用したダブル ポインタ要素アクセス

私はobjective-cが初めてで、今のところうまくいくことをやっていますが、いつか壊れるのではないかと心配しています。

オブジェクトの 1 つで、整数の行列をインスタンス変数として宣言します。行列のサイズはまだわからないので、次のように宣言しました。

コードの後半で、マトリックスの行と列の量がわかったら、次のように初期化します。

私の割り当てが正しいと仮定すると (実際に間違っているかどうか教えてください)、2 次元配列構文を使用して要素に自信を持ってアクセスできますか?

私が読んだことから、実際の2次元配列を作成すると、メモリは継続的に予約されますが、ダブルポインターを使用するとそうではない可能性があるためです。したがって、私は電話することを恐れています

実際にはメモリ内のランダムな場所を指します(私が割り当てた場所ではありません)。

回答ありがとうございます。

0 投票する
1 に答える
2113 参照

ios - ダブルポインタでNSStringの変数を宣言する方法

ダブルポインターを使いたいので、このように宣言しようとしました。

しかし、Xcodeは「明示的な所有権のない非const型 'NSString *'へのポインター」というエラーを表示し、コンパイルできませんでした。

最終的にはこうなりたい。

何かアドバイスがあれば教えてください。

0 投票する
2 に答える
85 参照

c - ポインタの配置の問題の原因は何ですか?

私のプログラムはファイルから単語を読み取り、動的に割り当てられた配列に単語の数として格納します。

私の問題は、配列を出力するときにwhileループにいるときに、正しい単語を指しているように見えることです。コードがwhileループを通過した後、すべてのインデックスを出力すると、「ice」が最後の単語になり、その理由を調べようとしています。

出力:

0 投票する
1 に答える
1304 参照

c++ - boost を使用して std::pair への double ポインター (ptr から ptr) を作成する

スマート ポインターを使用するために書き直したい次のコードがあります。宣言、メモリの割り当て、ダブル ポインターへのアクセスの適切な例を見つけるのに苦労しています。誰でも例を挙げてもらえますか? delete[] の代わりに delete を使用するため、shared_ptr を使用する方法ではないことを読みましたが、shared_array を使用する必要がありますか?

編集:corrArrayを最初に宣言する必要があります(クラスメンバーになります)

0 投票する
2 に答える
1211 参照

c - C言語のアドレスとしてのargv関数と文字列

質問。「C Programming」などの文字列が次のようにアドレス値としてコンパイルされるのはなぜですか?

私のアナロジーは次のようなものでした...できれば訂正してください。

char * argv[] パラメータの場合、これは char ** argv と同等です。したがって、この関数は void ShowAllString(int argc, char ** argv) のように、引数として double ポインターを受け取ります。したがって、str は配列 char * str[3] の名前であり、str はここでは配列名としての二重ポインターであるため、パラメーターとして str を持つことは理にかなっています。char * str[3] は、ポインターの 3 つの要素を持つことになっている配列です....しかし、アドレス値の代わりにそのような文字列が char * str[3] の隣に配置されるのはなぜですか...これは私が立ち往生している場所です!

私を助けてください!

0 投票する
1 に答える
66 参照

c++ - ダブルポインターの別のオプション

参照付きの関数へのポインターを送信するにはどうすればよいですか? つまり、その関数でポインターが指している場所を変更したいと思います。

たとえば、次のようなダブルポインターを見てきました。

しかし、これは最善の方法ではないと言われました。どうすればもっと良くなるでしょうか?これは機能しますか?:

ありがとう

0 投票する
0 に答える
863 参照

c - 構造体のダブルポインタを初期化

汎用ハッシュ テーブル内の汎用リンク リストへのポインターの配列を、ユーザー入力に依存するサイズで動的に割り当てようとしています。コードを見せてください。

これがドライバーです。ユーザーはハッシュ テーブルに必要なサイズを入力します。これは、ハッシュ テーブルに存在するリンク リストの数に直接相関します。

これが構造体です。リンクされたリストの配列が定義されています ListPtr * table => linkedList ** table;

これは、リンクされたリストを初期化する関数です。

これは、リンクされたリストを作成する関数です

私はEclipseのデバッガーでこれをステップスルーし、コンパイルして正常に実行していますが、CreateHashTable関数の実行中にh内の「テーブル」変数をクリックすると、すべてが正常に見え、ループが繰り返され、各インデックスでリストが作成されます。しかし、挿入しようとすると、セグメンテーション違反が発生します。

ListPointers の配列を初期化する方法が必要ですが、これ以上の方法は思いつきませんでした。

助けてください?

ありがとうございました