問題タブ [char-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.
c++ - while ループ内のポインターへの値の代入 (使用)
フォルダー c:/ に拡張子が ".exe" のファイルが 3 つあるとします。そして、タイプ char* の 3 つのポインターを作成したいと思います。このポインターのそれぞれには、.exe ファイルのファイル名が含まれています。したがって、3 つのポインター、つまり 3 つのファイル名があります。しかし、出力は本当に私を混乱させるものです (以下を参照)。
私の実装:
私の出力:
while ループ内にいる間は代入が期待されている (少なくとも期待されている) のに、ループの外側でポインターの同じ値をチェックしているときは、なぜ空なのですか? ありがとうございました!
c++ - C++でuint64_tをconst char *に変換するには?
const char *
以下に示すように受け入れる1つの方法があります-
以下は、get_data
渡してメソッドを呼び出す必要がある for ループconst char *
です。現在、以下のループで使用していますuint64_t
。uint64_t
これを変換してメソッドconst char *
に渡す必要があります。get_data
ここTmpIdSet
はtypedef std::set<uint64_t> TmpIdSet;
uint64_t
だから私の質問は、上記のコードをどのように変換すればよいconst char *
ですか?
c - 文字へのポインタはCで何を指していますか?
私は C でポインターを学習しようとしていますが、その概念を経験しました。このラボの質問に出くわし、その解決策を書き込もうとしました。
ただし、プログラムをコンパイルすると、2 つの主要なエラー カテゴリがあります。
printf ステートメントのフォーマット プレースホルダーがすべて間違っているようです。私は、メモリ アドレスを %x または %p で出力できるという印象を受けました。しかし、私のプログラムでは、どちらもコンパイラの警告を生成しました。私は理解できませんでした - 以前のプログラムの一部で %p が警告なしに機能した理由と、ここで %x と %p の両方が機能しなかった理由。どのプレースホルダーがどのデータ型で機能するかについて、誰かが私を助けてくれますか?
もう 1 つの大きな問題は、ポインターを文字変数に割り当てることです。このプログラムを実行すると、プログラムの 3 番目の printf ステートメントでセグメンテーション違反が発生します。なぜそうなのかはわかりません-
私が正しければ、このような宣言-
とchar *ptr=array
文字ポインタ変数ptr
が配列変数の最初の要素を指すように設定しますarray
。したがって、理想的には、*ptr
を示し'H'
、*(ptr+1)
を示します'e'
。
同じロジックに従って、var3
charを持つ文字変数がある場合'A'
、ポインター変数がそれを指すようにするにはどうすればよいptr3
でしょうか?
これが私が書いたプログラムです-
どんな助けでも大歓迎です。ありがとうございました。
c - 動的 C - char ポインター、strcpy、strcat
これが私のコードです:
2 つの文字列を取り、それらを連結してから、新しい文字列とその長さを別の関数に渡すことになっています。関数をサポートしていないDynamic C 9.62を使用しているため、malloc
代わりにmemsetを使用しています。
log
問題は、 に渡される前に の値を printf するとsendUDPLogPacket
、が含まれていることDynamiCUniversal Rabbit BIOS Version 9.50\?^>j
です。なぜこれが機能しないのか、誰にもアイデアがありますか?
c - 文字ポインターの使用に関する問題
ここのコードに問題があります。私のコードがすべきことは、ビットフィールドを平日に割り当てることです。たとえば、月曜日は 0x00、火曜日は 0x01 などです。これが私のコードです:
この時点で、コードを実行するときに (そして、少なくともコンパイルできれば) コードが行うべきことは次のとおりです。
月曜日です
残念ながら、それはコンパイルされないか、または「It's -88」などのポインターを変更すると表示されます。問題は、char wday への char ポインターにあると思います。しかし、コードを機能させる方法がわかりません。
C-Rookieを助けてくれてありがとう。
c++ - char ポインター/配列を関数に渡す
C の char ポインターをもっと理解しようとしていますが、1 つのことがわかります。
char ポインターを関数に渡し、ポインターが表す値を変更したいとします。以下に例を示します。
上記の例では、char ポインターを関数に渡すために知っているすべての作業メソッドをリストしました。私が理解していないのはMethod 1です。
char *(&Msg1)
関数に渡される最初の引数の意味は何Foo
ですか?
また、方法 2と方法 3は本やチュートリアルで広く紹介されているようで、それらの方法を配列/ポインターを渡す最も正しい方法として参照している人もいます。方法 1は私にはとてもいいと思います。特に API を作成するとき、ユーザーは事前にメモリを割り当てずにヌル ポインターを関数に簡単に渡すことができます。唯一の欠点は、ユーザーがメモリ ブロックを解放するのを忘れた場合にメモリ リークが発生する可能性があることです (方法 3と同じ)。Method 3 の代わりにMethod 2 または 3を使用することを好む理由はありますか?
c - 構造体ポインターを使用した等価関数
グラフがあり、グラフの 1 つのパラメーターは等値関数です。
これは私が書いたコードです:
この関数は、構造体ポインターを受け取り、これらのポインターが同一の文字列を指す文字ポインターを持つ構造体を指しているかどうかを確認することになっています。
理解するのが難しいか、情報が少ないかもしれませんが、equalityFunction をどのように書くことができるか考えられる人はいますか? ありがとう。
segmentation-fault - Valgrind: サイズ 1 の無効な書き込み
ヒープ上にメモリのブロックを作成し、memcpy を使用してそこにデータをコピーしようとしていますが、memcpy でセグメンテーション エラーが発生します。十分なメモリを割り当てたと思いますが、無効な書き込みがあるようです。なぜそれが起こるのか、理由を説明することはできません。作成と memcpy が発生するコードは以下のとおりです。応答の最初の 2 バイトの長さをコピーしているため、バッファー サイズを (response_length+sizeof(USHORT)) として割り当てています。
挿入機能の定義:
Valgrind のレポートは次のとおりです。
GDB バックトレース:
どんなヒントも役に立ちます。ありがとうございました!!
char-pointer - 文字列をchar配列に格納すると、キャストなしでポインターから整数が作成されます
最近ポインターを勉強しています。上記のコードでエラーが発生します-割り当ては、キャストなしでポインターから整数を作成します[デフォルトで有効になっています]。このエラーに関するSOの投稿をいくつか読みましたが、コードを修正できませんでした。私はcを8文字の任意の配列として宣言しました。cには最初の要素のアドレスがあります。したがって、*c = "hello" を実行すると、1 文字が 1 バイトに格納され、"hello" の他の文字に必要な数のバイトが使用されます。誰かが問題を特定して修正するのを手伝ってください。マーク