Menu
Coddy logo textTech

値渡しとポインタ渡し

Coddyの「C言語の関数」コースのレッスン 7/17。

関数にパラメータを渡すとき、値渡しとポインタ渡しの2つの方法があります。値とポインタが何を意味するのかを理解するために、簡単な例を見てみましょう。

#include <stdio.h>

void sum(int a) {
   a = a + 1;
   printf("sum function: %d\n", a);
}

int main(void) {
   int a = 10;
   sum(a);
   printf("main function: %d\n", a);
   return 0;
}

出力:

sum function: 11 
main function: 10 

この例でわかるように、値を使用しているため、変数 a の値は変わりませんでした。しかし、変数にアクセスしてその値を変更する必要がある場合は、パラメータとしてポインタを使用できます。

#include <stdio.h>

void sum(int *a) {
   *a = *a + 1;
   printf("sum function: %d\n", *a);
}

int main(void) {
   int a = 10;
   sum(&a);
   printf("main function: %d\n", a);
   return 0;
}

関数がパラメータとしてポインタを受け取るようになったため、呼び出すときには変数のアドレスを渡す必要があります。

sum(&a);

出力:

sum function: 11 
main function: 11 
challenge icon

チャレンジ

簡単

与えられたコードでは、y という変数を定義しています。

  • 整数へのポインタを引数として受け取る関数 square を作成してください。
  • この関数の中で、ポインタが指す変数の値を2乗し、その値を出力してください。
  • 元の変数が変更されたことを示すために、square 関数と main 関数の両方で変数の値を出力してください。

自分で試してみよう

#include <stdio.h>


// ポインタによって値を2乗する square 関数
 
int main(void) {

    int a = 200;
    
    // square 関数を呼び出す
     
    // 元の変数を出力する 
    
    return 0;
}

C言語の関数のすべてのレッスン