タグ付けされた質問 「c」

Cは、システムプログラミング(OSおよび組み込み)、ライブラリ、ゲーム、クロスプラットフォームに使用される汎用プログラミング言語です。このタグは、ISO 9899標準で定義されているC言語に関する一般的な質問で使用する必要があります(特に指定のない限り、最新バージョン9899:2018。バージョン固有のリクエストには、c89、c99、c11などのタグも付けます)。CはC ++とは異なり、合理的な理由がない限り、C ++タグと組み合わせるべきではありません。

6
出力で同じ長さになるようにprintf()を使用して文字列をフォーマットする方法は?
私は2つの機能、のようなメッセージを生成する一つを有するStarting initialization...、別のどのチェックがコードおよび出力を返すを"Ok"、"Warning"または"Error"。ただし、生成される出力の長さは異なります。 Starting initialization...Ok. Checking init scripts...Ok. どのように私はこのようなものを得ることができます: Starting initialization... Ok. Checking init scripts... Ok.

9
Cアプリケーションを終了すると、mallocされたメモリは自動的に解放されますか?
次のCコードがあるとします。 int main () { int *p = malloc(10 * sizeof *p); *p = 42; return 0; //Exiting without freeing the allocated memory } そのCプログラムをコンパイルして実行するとき、つまりメモリにスペースを割り当てた後、アプリケーションを終了してプロセスが終了した後も、割り当てたメモリは割り当てられます(つまり、基本的にスペースを占有します)。


15
Cでのエラー管理のためのgotoの有効な使用?
この質問は、実際には、少し前にprogramming.reddit.comで行われた興味深い議論の結果です。基本的には次のコードになります。 int foo(int bar) { int return_value = 0; if (!do_something( bar )) { goto error_1; } if (!init_stuff( bar )) { goto error_2; } if (!prepare_stuff( bar )) { goto error_3; } return_value = do_the_thing( bar ); error_3: cleanup_3(); error_2: cleanup_2(); error_1: cleanup_1(); return return_value; } ここでの使用法がgoto最善の方法であるように見え、すべての可能性の中で最もクリーンで最も効率的なコードが得られるか、少なくとも私には思えます。コード・コンプリートでのスティーブ・マコーネルの引用: gotoは、リソースを割り当て、それらのリソースに対して操作を実行し、リソースの割り当てを解除するルーチンで役立ちます。gotoを使用すると、コードの1つのセクションをクリーンアップできます。gotoを使用すると、エラーを検出した各場所でリソースの割り当てを忘れる可能性が低くなります。 このアプローチの別のサポートは、このセクションのLinux …

9
構造体をゼロ/ nullに初期化/リセット
struct x { char a[10]; char b[20]; int i; char *c; char *d[10]; }; 私はこの構造体を埋めて、値を使用しています。次の繰り返しで、私はにすべてのフィールドをリセットしたい0かnull、私はそれを再利用を開始する前に。 どうやってやるの?使用できますmemsetか、それともすべてのメンバーを通過してから個別に実行する必要がありますか?

10
C / C ++の最小double値
C(++)プログラムで最小の負の値を表す(たとえば、負の無限大を使用する)ための標準的および/または移植可能な方法はありますか? float.hのDBL_MINは、最小の正の数です。
92 c++  c  math 


11
C / C ++で配列をコピーする機能はありますか?
私はC / C ++を学ぶJavaプログラマーです。したがって、JavaにはSystem.arraycopy()のような関数があることがわかります。配列をコピーします。配列をコピーする関数がCまたはC ++にあるかどうか疑問に思いました。forループ、ポインターなどを使用して配列をコピーする実装を見つけることしかできませんでした。配列をコピーするために使用できる関数はありますか?
92 c++  c  arrays 

13
Cでビッグエンディアンをリトルエンディアンに変換[提供された関数を使用せずに] [終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 7年前休業。 この質問を改善する Cでビッグエンディアンをリトルエンディアンに変換する関数を記述する必要があります。ライブラリ関数を使用できません。
91 c  swap  endianness 

5
なぜこの構造体のサイズが2ではなく3なのですか?
私はこの構造体を定義しました: typedef struct { char A:3; char B:3; char C:3; char D:3; char E:3; } col; sizeof(col)私は3の出力を与えるが、それは2ではないでしょうか?1つの要素だけをコメント化するsizeofと、2になります。理由はわかりません。3ビットの5つの要素は15ビットに等しく、それは2バイト未満です。 このような構造を定義するときに「内部サイズ」はありますか?私の説明では、これまでの私の言語の概念から、サイズが3ではなく2バイトであると予想していたので、説明が必要です。
91 c++  c  struct 

4
C(または一般的な手続き型プログラミング)の設計原則、ベストプラクティス、および設計パターン?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 この質問を改善する Cプロジェクトの設計中に従うことができる既知の設計原則、ベストプラクティス、および設計パターンはありますか?それとも、手続き型(命令型)プログラミング全般に役立つ設計原則ですか? (私は「オブジェクト指向世代」の子であり、初めて大規模なCプロジェクトを設計する必要があります)

1
同じパッケージでroxygen2とdoxygenを使用していますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 この質問を改善する をR使用するパッケージがありますroxygen2。にはいくつかのCコードが/srcあり、私はDoxygenでの作業を始めたところです。ドキュメントを組み合わせる方法、またはコンパイルをroxygen2と統合する方法はありますか?Cコードドキュメントを配置する場所の「ベストプラクティス」はありますか? roxygen2とdoxygenのグーグルは主にroxygenにつながり、doxygenの結果と似ています。Doxyfilesを含むパッケージをいくつか見つけましたが、一貫した組織がありません。たとえば、lme4は、ソースディレクトリの外部inst/doc/Doxyfileと呼ばれるフォルダーに出力します。MatrixのルートディレクトリにもDoxyfileがあります(以前のリリースではにありました。このドキュメントもパッケージディレクトリの外にエクスポートされます)。doxygenlme4inst Cパッケージ内にドキュメントを含めない理由はありますか?または、広く使用されているにもかかわらず、Rパッケージ内でDoxygenがあまり使用されないのはなぜCですか? 更新:関連するroxygen2機能リクエストを参照

12
ヘッダーファイルの変数宣言-静的かどうか
一部#definesをリファクタリングするときに、C ++ヘッダーファイルで次のような宣言に遭遇しました。 static const unsigned int VAL = 42; const unsigned int ANOTHER_VAL = 37; 問題は、静的である場合、どのような違いがあるかです。古典的な#ifndef HEADER #define HEADER #endifトリックのため、ヘッダーを複数含めることはできません(重要な場合)。 静的とVALは、ヘッダーが複数のソースファイルに含まれている場合に、1つのコピーのみが作成されることを意味しますか?
91 c++  c  static 

3
CHAR_BITとは何ですか?
http://graphics.stanford.edu/~seander/bithacks.htmlから分岐せずに整数絶対値(abs)を計算するコードを引用します。 int v; // we want to find the absolute value of v unsigned int r; // the result goes here int const mask = v >> sizeof(int) * CHAR_BIT - 1; r = (v + mask) ^ mask; 特許取得済みのバリエーション: r = (v ^ mask) - mask; それは何でCHAR_BIT、どのように使用しますか?

5
C / C ++でポインター変数を宣言する正しい方法[終了]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 9年前休業。 ポインタ変数の宣言に次の表記法を使用している人がいることに気づきました。 (a) char* p; の代わりに (b) char *p; (b)を使用します。表記(a)の背後にある合理的なものは何ですか?文字ポインタはそれ自体が型ではないため、表記(b)は私にとってより意味があります。代わりに、タイプは文字であり、変数は文字へのポインターである場合があります。 char* c; これはchar *型があり、変数cがその型であるように見えます。しかし、実際にはタイプはcharであり、* c(cが指すメモリ位置)はそのタイプ(char)です。複数の変数を一度に宣言すると、この違いが明らかになります。 char* c, *d; これは奇妙に見えます。cとdはどちらも、文字を指す同じ種類のポインタです。これで次のものはより自然に見えます。 char *c, *d; ありがとう。
91 c++  c  pointers  coding-style 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.