はじめに
今回は5回目ということで、大きなプログラムを書く場合に必要な知識を学んでいきます。
使用する環境
環境はVisual Studio 2022を使用します。
スコープを知る
変数の名前が通用する範囲のことをスコープといいます。
変数a:関数の外に宣言したグローバル変数
変数b:main()関数内に宣言したローカル変数
変数c:func()関数内に宣言したローカル変数
#include <iostream>
using namespace std;
//func関数の宣言
void func();
int a = 3;
//main関数ではグローバル変数aとローカル変数bが使えます
int main() {
int b = 5;
cout << "変数aの値は" << a << "です。\n";
cout << "変数bの値は" << b << "です。\n";
func();
return 0;
}
//func関数ではグローバル変数aとローカル変数cが使えます
void func() {
int c = 10;
cout << "変数aの値は" << a << "です。\n";
cout << "変数cの値は" << c << "です。\n";
}
変数の記憶寿命を知る
通常のローカル変数は関数が終了するまでの記憶寿命しか持ちませんが、ローカル変数にstatic
を指定することで、グローバル変数と同じ記憶寿命をもつようになります。
static int d = 100;
動的なメモリの確保
関数の開始・終了にかかわらず、記憶しておきたい値がある場合、ローカル変数は使えません。対してグローバル変数では実行中の値を保持することができますが限りあるメモリを無駄遣いすることにもなります。動的にメモリを確保する方法により、メモリを必要な時に利用することができるようになります。
#include <iostream>
using namespace std;
int main() {
int* pA;
pA = new int;
cout << "動的にメモリを確保しました。\n";
*pA = 5;
cout << "動的に確保したメモリを使って" << *pA <<
"を出力しています。\n";
delete pA;
cout << "確保したメモリを解放しました。\n";
return 0;
}
ファイルを分割する
一度作成した関数を再利用することができれば便利です。別のプログラムから利用するような関数は、main()関数と別のファイルに記述することでいろいろなプログラムから利用しやすくなります。
- myfunc.h
#pragma once
int min(int x, int y);
- myfunc.cpp
#include "myfunc.h"
//min関数の宣言
int min(int x, int y)
{
if (x < y)
return x;
else
return y;
}
- test.cpp
#include <iostream>
#include "myfunc.h"
using namespace std;
int main() {
int num1, num2, ans;
cout << "1番目の整数を入力してください。\n";
cin >> num1;
cout << "2番目の整数を入力してください。\n";
cin >> num2;
ans = min(num1, num2);
cout << "最小値は" << ans << "です。\n";
return 0;
}
参考文献
この記事は以下の情報を参考にして執筆しました。
やさしいC++ 第4版 (「やさしい」シリーズ)