C言語において、引数に値を設定の方法

C 言語では、関数のパラメータで値や変数のアドレスを渡し、関数の内部でパラメータに値を設定できます。パラメータに値を設定する方法は 2 つあります。

  1. 値渡し:関数の引数に数値を直接渡し、関数内での引数の変更が反映されること。
#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 関数内で作成したコピーであり、コピーの変更が元の変数に影響を与えないためです。

  1. アドレス渡し:関数のパラメータに渡した変数のアドレスを渡すことで、関数内でポインタを利用し、元の変数の値を変更できる
#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を代入しており、これにより元の変数の値を変更できます。

bannerAds