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

値による呼び出しと参照による呼び出しの違い


関数へのパラメーターの受け渡しに基づくプログラミングでは、関数の呼び出しを値による呼び出しと参照による呼び出しの2つに分類しました。名前が示すように、両方の呼び出しでパラメーターのタイプごとに関数を呼び出し、パラメーターの実際の値を渡します。その他では、パラメータの場所/参照を渡します。

値による呼び出しと参照による呼び出しの重要な違いは次のとおりです。

キー 値による呼び出し 参照による呼び出し
Sr。いいえ。
1 命名規則 このタイプの場合と同様に、パラメータの値は関数呼び出しに渡されるため、CallbyValueという名前が付けられます。 一方、このタイプでは、関数を呼び出すためにパラメーターの参照が渡されるため、参照による呼び出しという名前が付けられます。
2 内部実装 Call by valueでは、関数の呼び出し中に渡したパラメーターの値が、関数の実際のローカル引数にコピーされます。 参照による呼び出しでは、渡されたパラメータの場所アドレス/参照がコピーされ、関数のローカル引数に割り当てられるため、渡されたパラメータと実際の引数の両方が同じ場所を参照します。
3 変更の影響 渡されたパラメータの値が関数の引数にコピーされるため、関数内の引数で行われた変更は渡されたパラメータに反映されません。 引数と渡されたパラメーターの両方が同じ場所を参照しているため、関数内で引数に加えられた変更はすべて、渡されたパラメーターに反映されます。
4 参照されたメモリの場所 渡されたパラメータと関数の実際の引数の両方を参照するメモリ位置が異なります。 渡されたパラメータと関数の実際の引数の両方によって参照されるメモリ位置は同じです。
5 サポートされている言語。 値による呼び出しは、C++。PHPなどの言語でサポートされています。 Visual Basic NET、およびC#。 参照による呼び出しは、主にJAVAによってサポートされます。

値による呼び出しと参照による呼び出しの例

ByValue.c

#include <stdio.h>
class ByValue{
   void swapByValue(int, int); /* Prototype */
   int main(){
      int n1 = 10, n2 = 20;
      swapByValue(n1, n2);
      printf("n1: %d, n2: %d\n", n1, n2);
   }
   void swapByValue(int a, int b){
      int t;
      t = a; a = b; b = t;
   }
}

出力

n1: 10, n2: 20

ByReference.c

#include <stdio.h>
class ByReference{
   void swapByReference(int*, int*);
   int main(){
      int n1 = 10, n2 = 20;
      swapByReference(&n1, &n2);
      printf("n1: %d, n2: %d\n", n1, n2);
   }
   void swapByReference(int *a, int *b){
      int t;
      t = *a; *a = *b; *b = t;
   }
}

出力

n1: 20, n2: 10

  1. JavaScriptの2乗の合計と合計の2乗の違い

    唯一の入力としてnなどの数値を受け取るJavaScript関数を作成する必要があります。 関数は-である必要があります 最初のn個の自然数の二乗和を計算します。 最初のn個の自然数の合計の2乗を計算します。 得られた両方の数値の絶対差を返します。 例:n=5の場合; 次に、 sum of squares = 1 + 4 + 9 + 16 + 25 = 55 square of sums = 15 * 15 = 225 したがって、出力=225 − 55 =170 例 このためのコードは-になります const squareDifference = (num =

  2. CellpaddingとCellspacingの違い

    この投稿では、セルパディングとセル間隔の違いを理解します。 セルパディング 単一のセルに関連付けられています。 セルの境界とセル内のコンテンツの間に存在する空白を制御するのに役立ちます。 セルパディングのデフォルト値は1です。 効果的な方法として使用されます。 HTMLのタグを使用して作成されます。 属性のタイプは「cellpadding」に設定されています。 例 <table cellpadding="value" >.....</table> セルスペース 複数のセルに関連付けられています。 単