問題タブ [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 - 文字ポインタへのバブルソート
'char** arr' に char ポインターを挿入し、char ポインターを strcmp でソートするプログラムを作成しようとしていますが、何らかの理由で機能しません。追加したコードは全体のソート部分です。コード。
c - (char*) 0 とはどういう意味ですか?
これは、この質問に関する質問です: What does (char *)0 mean in c?
そこでは、答えが正確に何であるかを説明することから少し離れた答えがありましたが、最終的な答えは、それがアドレス0の文字へのポインターであり、nullであると述べました。これは私に2つの疑問をもたらしました。
c では、char* 9 を与えて、それがアドレス 9 へのポインターであると言えますか? エラーや警告は表示されませんか?
(char*) 0 は確かにアドレス 0 の文字へのポインタですが、このアドレス 0 はどういう意味ですか? つまり、それがヌルであるとどのように言えますか? その場合、 (char*) 1 または (char*) 2 などの値はどうなるでしょうか?
編集:それが役立つかどうかにかかわらず、ここに置くだけです。この質問を最初に検索したのは、execl
Linux システム コールの最後の引数が null で、かなり奇妙な構文 ((char *) 0) を見つけたときでした。
ありがとう。
c++ - c/c++ でのポインタから文字配列への代入
過去に私は Visual Studio 2010/2013/2015 を使用しており、この構文は可能でした:
g++ をインストールし、SlickEdit を IDE として使用しているため、コーディングのライフスタイルを Linux に移行することにしました。
その言葉はもう通用しないようです。誰でも理由を述べてもらえますか?
ただし、これは機能します:
エラーはc ++ 11のものです。
なぜこれが起こるのか誰にも分かりますか?それを修正する方法ではなく、私のワークスペースには c++11 コンパイラをインストールする方法がないため、コンパイラの動作の背景に何か関係があるかどうかに興味があります。コードの最初の行について私が知っていることは、スタック上に定数変数を作成し、その ESP の値に向けて設定する新しいポインターを作成することですが、2 行目では、定数変数の文字数をカウントしてから結果として最後に null ターミネータを設定します。
ああ、もう1つ->最初のタイプが{char * &}で、2番目のタイプが{char(*) [12]であるため、最初のタイプがGCC/GPPで設定されている方法にも違いがあるようです[12] }、それについても説明はありますか?ありがとう!
c - 2D char配列へのポインタと2D int配列へのポインタの違いは何ですか?
私の質問:
char配列とint配列の場合のデータ格納メカニズムについて明確なアイデアを得るのを手伝ってください
上記のプログラムでは、ステートメント A に示すように char 配列へのポインターが char の 2D 配列を指している場合、正しく表示されますが、通常の char ポインターによって指され、ステートメント C で char を出力しようとすると、SegFault が発生することを理解しています。代わりに、「n」(最初の配列「ポインターへのポインター」の 3 番目の数字の文字) を出力する必要があるため、int 配列の場合、ステートメント D で適切な要素 n = 11 を取得している理由と、この場合 (ステートメント C) である理由が混乱しています。正しく印刷されません。
char配列の場合のデータの格納方法は、以下に示すこの形式で格納されます
このように格納されている場合、ステートメント D に示されている整数ポインターの配列のように機能するはずです。
c - リンク リスト文字ポインタ scanf 入力
を使用して、リンクされたリストの char ポインターに複数回入力しようとしていますscanf
。しかし、新しい入力を入力するname
たびに、すべてのフィールドが変更されます。
ここに私のリンクされたリストがあります:
ここに私の主な機能があります:
挿入機能:
基本的に私が入力した場合:
注:例を使用せずに手動でデータを入力すると、関数は期待どおりに機能しますscanf
:
c - char * 要素の変更に関する SIGSEGV
以下のプログラムでは、
デバッガ:
SIGSEGV オンstr2[1] = 's';
私の理解によると、文字列リテラルが定数である宣言のために、によってabc
指されたを変更することはできません。st1
const char *st1 = "abc"
char *
typestr2
が要素の変更を許可しないのはなぜですか? stringliteraldef
も定数文字列リテラルです。
c - strtok は非 const char 引数では機能しません
文を取り、各単語を逆にするこの機能があります。値をその場で変更する必要があり、戻り値は Null である必要があります。メインを変更できません:
私のreverser
機能strtok
では、non-const char*
strdup を使用しても機能せず、理由がわかりません...誰かがそれを機能させるための提案をしていますか? ありがとうございました