1-16-5. 関数へのポインタ渡し

公開日: 16:18 1. 基本編/1-16. ポインタ/1-16-5. 関数へのポインタ渡し


C++では関数にポインタを渡すことができます。そうするためには、単純に関数の引数をポインタ型として宣言します。 以下はunsigned long型へのポインタを関数に渡し、関数内部で変更した値を呼び出し元に反映する例です。
#include <iostream>
#include <ctime>
 
using namespace std;
void getSeconds(unsigned long *par);

int main ()
{
   unsigned long sec;


   getSeconds( &sec );

   // 実際の値を出力
   cout << "秒数 :" << sec << endl;

   return 0;
}

void getSeconds(unsigned long *par)
{
   // 現在の秒数を取得
   *par = time( NULL );
   return;
}

上のコードをコンパイルし実行すると、次の結果が得られます。
秒数 :1294450468

ポインタを受け取れる関数は次のように配列も受け取ることができます。
#include <iostream>
using namespace std;
 
// 関数定義
double getAverage(int *arr, int size);
 
int main ()
{
   // 長さ5のint型配列
   int balance[5] = {1000, 2, 3, 17, 50};
   double avg;
 
   // 配列を指すポインタを引数として渡す
   avg = getAverage( balance, 5 ) ;
 
   // 実際の値を出力
   cout << "平均値: " << avg << endl; 
    
   return 0;
}

double getAverage(int *arr, int size)
{
  int    i, sum = 0;       
  double avg;          
 
  for (i = 0; i < size; ++i)
  {
    sum += arr[i];
   }
 
  avg = double(sum) / size;
 
  return avg;
}

上のコードをコンパイルし実行すると、次の結果が得られます。
平均値: 214.4
  • ?±??G???g???[?d????u?b?N?}?[?N???A

0 件のコメント :

コメントを投稿