-
C / C ++で前方宣言を使用できるのはいつですか?
C ++では、前方宣言により、宣言に続くコードは、Personという名前のクラスがあることを認識できます。これは、これらの名前が使用されていることを確認すると、コンパイラーを満足させます。後で、リンカーはクラスの定義を見つけます。 サンプルコード Class Person; void myFunc(Person p1) { // ... } Class Person { // Class definition here }; したがって、この場合、コンパイラーがmyFuncに遭遇すると、コードのどこかでこのクラスに遭遇することがわかります。これは、クラスを使用するコードが、クラス
-
現在のCまたはC++標準ドキュメントはどこにありますか?
この投稿では、現在および過去のC /C++標準の無料ドラフトを購入して表示できる詳細を入手できます。 Cドキュメント C11: 198 CHF(https://www.iso.org/standard/57853.html) 公開(https://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf) ウィキペディアリンク(https://en.wikipedia.org/wiki/C11_(C_standard_revision)) C99: 購入できません(https://www.iso.org/st
-
C数値を文字列に変換するプログラム
このセクションでは、数値(整数、浮動小数点数、またはその他の数値型データ)を文字列に変換する方法を説明します。 ロジックは非常に単純です。ここでは、sprintf()関数を使用します。この関数は、値または行を文字列に出力するために使用されますが、コンソールでは使用されません。これは、printf()とsprintf()の唯一の違いです。ここで、最初の引数は文字列バッファです。データを保存したい場所。 Input: User will put some numeric value say 42.26 Output: This program will return the string equ
-
strcpy()関数を使用せずに文字列をコピーするCプログラム
このセクションでは、strcpy()関数を使用せずに文字列を他の文字列にコピーする方法を説明します。この問題を解決するために、strcpy()のように機能する独自の関数を作成できますが、ここではいくつかのトリックに従います。別のライブラリ関数を使用して、文字列を別の文字列にコピーします。 ロジックは非常に単純です。ここでは、sprintf()関数を使用します。この関数は、値または行を文字列に出力するために使用されますが、コンソールでは使用されません。これは、printf()とsprintf()の唯一の違いです。ここで、最初の引数は文字列バッファです。データを保存したい場所。 Input &m
-
プログラム内で引用符なしで文字列を出力するCプログラム
これはもう1つの難しい問題です。このプログラムでは、引用符が使用されていないCを使用して文字列を印刷する方法を説明します。 ここではマクロ関数を使用しています。 のようなマクロ関数を定義しています #define getString(x) #x getString()はマクロ関数です。 xを文字列に変換して返します。 xの前の#は、関数がxを文字列に変換することを示しています。 Input: Take one string without quote Output: Print that string into console アルゴリズム Step 1:Take a string wit
-
文字列連結用のC/C++マクロ
このプログラムでは、マクロを使用して2つの文字列を連結する方法を説明します。マクロで2つまたは3つ以上の文字列を作成し、それらを次々に書き込んで連結文字列に変換することができます。構文は次のとおりです。 #define STR1 "str1" #define STR2 " str2" #define STR3 STR1 STR2 //it will concatenate str1 and str2 入力: 2つの文字列を取ります 出力: 連結された文字列を返します。 アルゴリズム Step 1:Take two strings Step 2: Us
-
Cで浮動小数点数を文字列に変換します
このセクションでは、数値(整数、浮動小数点数、またはその他の数値型データ)を文字列に変換する方法を説明します。 ロジックは非常に単純です。ここでは、sprintf()関数を使用します。この関数は、値または行を文字列に出力するために使用されますが、コンソールでは使用されません。これは、printf()とsprintf()の唯一の違いです。ここで、最初の引数は文字列バッファです。データを保存したい場所。 Input: User will put some numeric value say 42.26 Output: This program will return the string equ
-
CまたはC++で文字列を元に戻すにはどうすればよいですか?
このセクションでは、文字列を元の位置に戻す方法を説明します。したがって、他のメモリスペースを使用して元に戻すことはしません。 C ++では、std::stringを使用できます。ただし、Cの場合は、文字配列を使用する必要があります。このプログラムでは、文字配列を使用して文字列を取得しています。次に、それを逆にします。 Input: A string “This is a string” Output: The reversed string “gnirts a si sihT” アルゴリズム reverse_string(str) 入力 −文
-
C / C ++で整数のオーバーフローを検出する方法は?
唯一の安全な方法は、オーバーフローが発生する前にオーバーフローをチェックすることです。ただし、整数のオーバーフローをチェックするためのハッキーな方法がいくつかあります。したがって、unsigned int加算でオーバーフローを検出することを目的としている場合は、結果が実際に加算された値よりも小さいかどうかを確認できます。たとえば、 サンプルコード unsigned int x, y; unsigned int value = x + y; bool overflow = value < x; // Alternatively "value < y" should
-
C / C ++プログラムのセグメンテーション違反とは何ですか?
プログラムがアクセスを許可されていないメモリ領域にアクセスしようとすると、セグメンテーション違反が発生します。つまり、プログラムが、オペレーティングシステムがプログラムに割り当てた制限を超えたメモリにアクセスしようとしたとき。 セグメンテーション違反は、主に次のポインタが原因で発生します: 適切に初期化されることに慣れています。 それらが指すメモリが再割り当てまたは解放された後に使用されます。 インデックスが配列の境界外にあるインデックス付き配列で使用されます。
-
C /C++関数からローカル配列を返す方法
これは、関数からローカル配列を返すC++プログラムです。 アルゴリズム Begin We can use dynamically allocated array to return a local array from function Array(). Print the elements of the array. End サンプルコード #include <iostream> using namespace std; int* Array() { int* a = new int[100]; a[0] = 7; a[1] = 6; a[2]
-
C /C++での多次元配列の初期化
多次元配列では、配列の次元は1より大きい必要があります。次の図は、次元が3 x 3x3の多次元配列のメモリ割り当て戦略を示しています。 これは、多次元配列を初期化するためのC++プログラムです。 アルゴリズム Begin Initialize the elements of a multidimensional array. Print the size of the array. Display the content of the array. End 例 #include<iostream>
-
C /C++の多次元配列
C / C ++では、多次元配列は簡単な言葉で配列の配列として定義されます。多次元配列では、データは表形式で(行の主要な順序で)格納されます。次の図は、次元が3 x 3x3の多次元配列のメモリ割り当て戦略を示しています。 アルゴリズム Begin Declare dimension of the array. Dynamic allocate 2D array a[][] using new. Fill the array with the elements. Print the ar
-
sizeofを使用せずにC/C++で配列のサイズを検索する
このプログラムでは、sizeofを使用せずにC /C++で配列のサイズを検索します。 アルゴリズム Begin Initialize the elements of the array. &a => This is the pointer to array which points at the same memory address as a. &a + 1 => It points at the address after the end of the array. *(a+1) => Dereferencing to *(&
-
Cの構造体の柔軟な配列メンバー
Cの構造体の柔軟な配列メンバーは、構造体内の次元なしで配列を宣言でき、そのサイズは本質的に柔軟であることを意味します。柔軟な配列メンバーは、クラスの最後のメンバーである必要があります。 次に例を示します: 例 #include #include #include //structure of type employee and must contain at least one more named member in addition to the flexible array member. struct employee { int emp_id;  
-
C /C++での短縮配列表記
Cに繰り返し値が存在する場合は、省略形の配列表記を使用してその配列を定義します。 次に例を示します: サンプルコード #include <stdio.h> int main() { int array[10] = {[0 ... 3]7, [4 ... 5]6,[6 ... 9]2}; for (int i = 0; i < 10; i++) printf("%d ", array[i]); return 0; } 出力 7 7 7 7 6 6 2 2 2 2 このプログラムでは、 int array[10] = {[0
-
Cが配列パラメーターをポインターとして扱うのはなぜですか?
Cは、時間と効率が低いため、配列パラメーターをポインターとして扱います。ただし、配列の各要素のアドレスを引数として関数に渡すことができれば、より時間がかかります。したがって、最初の要素のベースアドレスを次のような関数に渡すことをお勧めします: void fun(int a[]) { … } void fun(int *a) { //more efficient. ….. } Cのサンプルコードは次のとおりです: #include void display1(int a[]) //printing the array content { &nbs
-
C /C++での配列要素の珍しい表現
これは、配列要素の珍しい表現の単純なC++プログラムです。 #include<iostream> using namespace std; int main() { int array[5] = {7,7,7, 6, 6}; for (int i = 0; i < 5; i++) cout<<*(array+i); return 0; } 出力 7 7 7 6 6
-
Cのポインタと配列
ほとんどの場合、ポインタと配列はcでは同じように扱われます。いくつかの違いは次のとおりです。 &operator: &pointer=ポインタのアドレスを返します。 &array=最初の要素のアドレスを返します。 sizeof演算子: sizeof(array)=配列のすべての要素によって消費された合計メモリを返します。 sizeof(pointer)=ポインタ変数自体が消費する唯一のメモリを返します。 配列変数に値を再割り当てすることはできませんが、ポインタ変数に再割り当てすることはできます。 宣言: int a[]; //array Int *p; //
-
C / C ++配列インデックスがゼロから始まるのはなぜですか?
配列インデックスは0で始まるため、a [i]は*(a + i)として実装できます。 配列インデックスが1で始まる場合、a [i]は*(a + i-1)として実装されます。これはコンパイル中に時間がかかり、プログラムのパフォーマンスにも影響します。 したがって、配列のインデックスは0から開始することをお勧めします。 配列の簡単なプログラムが与えられます- サンプルコード int main() { int array[5] = {7, 7, 7, 6, 6}; for (int i = 0; i < 5; i++) &nb