第8講 関数(2)
第1話 C++の魔法!
C++では変数そのものすなわち箱そのものは渡すことが出来ません。
関数内で宣言した変数のスコープ(適用範囲)は関数内に限定されているからです。
引数で渡していたのは、箱そのものではなくあくまで箱の中身である値です。
ですが、仕事を依頼した関数に、
箱の中身を変更してもらいたいときがあります。
箱を渡していないのに、
箱の中身を変えるなんてこと出来るのでしょうか。
もし、すでに方法がわかった人がいるとすれば、
あなたは慧眼の持ち主です。
箱の中身を参照して(コピーして)渡すしかないにしても、
箱の中身をいじってもらう方法はあります。
値しか渡せなくてもよいのです。

そうです。
箱のアドレスを渡せば、仕事を依頼された関数はその箱の中身を参照したり、
中身を変えたりすることが出来ます。
実際にやってみましょう。
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
void f(int *x); //関数f()のプロトタイプ宣言
int main() {
  int a, *b;
  a = 3;
  printf("a=%d\n", a);
  b = &a;
  f(b); //関数f()に箱aの中身を変えるように依頼
  printf("a=%d\n", a);
  return(0);
}
void f(int *x) {
  *x = 5;
}
実行画面
a=3
a=5


引数名がxとなっていますが、引数名は自由に付けられましたね。
関数f()が受け取ったのは、箱aのアドレスです。
金庫(箱)のありか(住所)を教えて、
その金庫(箱)の中身を変えてもらったのです。

今は変数を渡しましたが、配列を渡して
実行画面が
1 7 4 0 9 4 8 8 2 4
となるプログラムを考えて下さい。
関数(1)では、変数や配列を渡す方法がなかったので、
データ作成とデータ表示を分業することが出来ませんでしたが、
実質渡せるようになって、分業をさせることができます。
関数f()はデータを作成して、関数g()はそのデータを表示というわけです。


第7講第9話へ   第2話へ

002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ