C言語において、引数に値を設定の方法
C 言語では、関数のパラメータで値や変数のアドレスを渡し、関数の内部でパラメータに値を設定できます。パラメータに値を設定する方法は 2 つあります。
- 値渡し:関数の引数に数値を直接渡し、関数内での引数の変更が反映されること。
#include <stdio.h>
void assignValue(int x) {
x = 10;
}
int main() {
int num = 5;
printf("Before assignment: %d\n", num);
assignValue(num);
printf("After assignment: %d\n", num);
return 0;
}
得た結果:
Before assignment: 5
After assignment: 5
この例では、assignValue 関数内でパラメータ x に 10 を代入しても、main 関数でパラメータ num を出力すると、パラメータの値は変わりません。これは、パラメータ x が assignValue 関数内で作成したコピーであり、コピーの変更が元の変数に影響を与えないためです。
- アドレス渡し:関数のパラメータに渡した変数のアドレスを渡すことで、関数内でポインタを利用し、元の変数の値を変更できる
#include <stdio.h>
void assignValue(int* x) {
*x = 10;
}
int main() {
int num = 5;
printf("Before assignment: %d\n", num);
assignValue(&num);
printf("After assignment: %d\n", num);
return 0;
}
出力を生成します。
Before assignment: 5
After assignment: 10
この例では、assignValue関数の引数の前に*をつけることで引数がポインタ変数であることを示し、関数の内部ではポインタ演算子*を使ってポインタが指す変数にアクセスしています。main関数では、&演算子によって変数numのアドレスを取得し、アドレスをassignValue関数に渡しています。関数内部では、*x = 10によってポインタxが指す変数に10を代入しており、これにより元の変数の値を変更できます。