関数呼び出しの簡単な要約

ブログを書いてから久しぶりです。怠け者です。
テクノロジーであろうと知識であろうと、重要なのはインプットではなくアウトプットと言いましたあなたが使用できる知識だけがあなたのものです。ブログは良いテストプロセスです。あなたが学んだことをわかりやすく説明
できることは、他の人に教え、すぐに自分自身を向上させることができます。
最近、C言語の基本的な知識を復習し、簡単な知識のポイントをまとめました。基本はとても重要です...
同時に、自分自身にフラグを立て、一生懸命勉強し、もっと要約し、もっとブログを書きます...

ここに写真の説明を挿入

関数を呼び出す場合、パラメーターを関数に渡す方法は2つあります。

値で呼び出す

このメソッドは、パラメーターの実際の値を関数の正式なパラメーターにコピーします。この場合、関数の正式なパラメーターを変更しても、実際のパラメーターには影響しません。

#include <stdio.h>
 
/* 函数声明 */
void swap(int x, int y);
 
int main ()
{
    
    
   /* 局部变量定义 */
   int a = 100;
   int b = 200;
 
   printf("交换前,a 的值: %d\n", a );
   printf("交换前,b 的值: %d\n", b );
 
   /* 调用函数来交换值 */
   swap(a, b);
 
   printf("交换后,a 的值: %d\n", a );
   printf("交换后,b 的值: %d\n", b );
 
   return 0;
}

/* 函数定义 */
void swap(int x, int y)
{
    
    
   int temp;

   temp = x; /* 保存 x 的值 */
   x = y;    /* 把 y 赋值给 x */
   y = temp; /* 把 temp 赋值给 y */
  
   return;
}

出力結果

交換前、aの値:100
交換前、bの値:200
交換後、aの値:100
交換後、bの値:200

この結果から、関数内ではaとbの値のみが交換され、実際にはaとbの値は変更されていないことがわかります。

ここに写真の説明を挿入

参照による呼び出し

ポインタ転送方式では、フォーマルパラメータは実際のパラメータのアドレスへのポインタであり、フォーマルパラメータを操作する場合は、実際のパラメータ自体を操作するのと同じです。

#include <stdio.h>
 
/* 函数声明 */
void swap(int *x, int *y);
 
int main ()
{
    
    
   /* 局部变量定义 */
   int a = 100;
   int b = 200;
 
   printf("交换前,a 的值: %d\n", a );
   printf("交换前,b 的值: %d\n", b );
 
   /* 调用函数来交换值
    * &a 表示指向 a 的指针,即变量 a 的地址
    * &b 表示指向 b 的指针,即变量 b 的地址
   */
   swap(&a, &b);
 
   printf("交换后,a 的值: %d\n", a );
   printf("交换后,b 的值: %d\n", b );
 
   return 0;
}

/* 函数定义 */
void swap(int *x, int *y)
{
    
    
   int temp;
   temp = *x;    /* 保存地址 x 的值 */
   *x = *y;      /* 把 y 赋值给 x */
   *y = temp;    /* 把 temp 赋值给 y */
  
   return;
}

出力結果

交換前、aの値:100
交換前、bの値:200
交換後、aの値:200
交換後、bの値:100

出力結果から、値による呼び出しとは異なり、関数内の正式なパラメーターは実際のパラメーターのアドレスへのポインターであり、正式なパラメーターに対するポインティング操作も実際のパラメーター自体に対する操作と同等であることがわかります。

参考資料:新人チュートリアルなど

パブリックアカウント:男性の神の愛のコーディング

パブリックアカウント:男性の神の愛のコーディング

一緒に注意を払い、学び、改善することを歓迎します!

おすすめ

転載: blog.csdn.net/weixin_44093867/article/details/106072407