ブログを書いてから久しぶりです。怠け者です。
テクノロジーであろうと知識であろうと、重要なのはインプットではなくアウトプットだと言いました。あなたが使用できる知識だけがあなたのものです。ブログは良いテストプロセスです。あなたが学んだことをわかりやすく説明
できることは、他の人に教え、すぐに自分自身を向上させることができます。
最近、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
出力結果から、値による呼び出しとは異なり、関数内の正式なパラメーターは実際のパラメーターのアドレスへのポインターであり、正式なパラメーターに対するポインティング操作も実際のパラメーター自体に対する操作と同等であることがわかります。
参考資料:新人チュートリアルなど
一緒に注意を払い、学び、改善することを歓迎します!!!