C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++のアレイディケイとは何ですか?どうすればそれを防ぐことができますか?


ここでは、ArrayDecayとは何かを確認します。配列のタイプと次元が失われることを、配列の減衰と呼びます。これは、ポインタまたは値によって配列を関数に渡すときに発生します。最初のアドレスは、ポインタである配列に送信されます。そのため、配列のサイズは元のサイズではありません。

C++コードを使用した配列減衰の1つの例を見てみましょう。

#include<iostream>
using namespace std;
void DisplayValue(int *p) {
   cout << "New size of array by passing the value : ";
   cout << sizeof(p) << endl;
}
void DisplayPointer(int (*p)[10]) {
   cout << "New size of array by passing the pointer : ";
   cout << sizeof(p) << endl;
}
int main() {
   int arr[10] = {1, 2, };
   cout << "Actual size of array is : ";
   cout << sizeof(arr) <<endl;
   DisplayValue(arr);
   DisplayPointer(&arr);
}

出力

Actual size of array is : 40
New size of array by passing the value : 8
New size of array by passing the pointer : 8

次に、C++で配列が減衰するのを防ぐ方法を説明します。アレイの減衰を防ぐには、次の2つの方法があります。

  • 配列のサイズをパラメータとして渡すことで配列の減衰を防ぎ、配列のパラメータにsizeof()を使用しないでください。
  • 参照によって配列を関数に渡します。配列がポインタに変換されるのを防ぎ、配列の減衰を防ぎます。

#include<iostream>
using namespace std;
void Display(int (&p)[10]) {
   cout << "New size of array by passing reference: ";
   cout << sizeof(p) << endl;
}
int main() {
   int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
   cout << "Actual size of array is: ";
   cout << sizeof(arr) <<endl;
   Display(arr);
}

出力

Actual size of array is: 40
New size of array by passing reference: 40

  1. C ++を使用してコンソールをクリアするにはどうすればよいですか?

    C++コードを使用してコンソールをクリアできます。これを行うには、いくつかのシステムコマンドを実行する必要があります。 Linuxシステムでは、POSIXが使用されます。 system()関数を呼び出して、システムコマンドを実行できます。 Linuxでコンソールをクリアするには、「clear」コマンドを使用できます。これはsystem()関数内で渡されます。 より良いアイデアを得るためにコードを見てみましょう。 例 #include <iostream> using namespace std; int main () {    cout << &

  2. ファーミングとは何ですか?どのように防ぐことができますか?

    この時代では、だまされやすいコンピュータユーザーはますますまれになっています。インターネット上でマルウェア教育が普及しているため、人々は数百万ドルを獲得したと主張する詐欺メールに簡単にだまされることはありません。 ただし、それはハッカーがそれほど決心していないという意味ではありません。それは彼らがより賢く働かなければならなかったことを意味します。会社のインフラストラクチャをスパイしたり、上司のアドレスから従業員にメールを送信したり、ユーザーのFacebookアカウントを誘拐したり、友人にメッセージを送信したりするなど、最近のハッキングでは信頼の乱用が選択されています。 彼らが理解している方