値渡しとポインタ渡し
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 チャレンジ
簡単与えられたコードでは、y という変数を定義しています。
- 整数へのポインタを引数として受け取る関数
squareを作成してください。 - この関数の中で、ポインタが指す変数の値を2乗し、その値を出力してください。
- 元の変数が変更されたことを示すために、
square関数とmain関数の両方で変数の値を出力してください。
自分で試してみよう
#include <stdio.h>
// ポインタによって値を2乗する square 関数
int main(void) {
int a = 200;
// square 関数を呼び出す
// 元の変数を出力する
return 0;
}