Cplusplus-cpp-passing-pointers-to-functions

提供:Dev Guides
移動先:案内検索

C ++で関数にポインターを渡す

C ++では、ポインターを関数に渡すことができます。 そのためには、単に関数パラメーターをポインター型として宣言します。

関数に符号なしの長いポインタを渡し、呼び出し元の関数に反映される関数内の値を変更する簡単な例に従って-

#include <iostream>
#include <ctime>

using namespace std;
void getSeconds(unsigned long *par);

int main () {
   unsigned long sec;
   getSeconds( &sec );

  //print the actual value
   cout << "Number of seconds :" << sec << endl;

   return 0;
}

void getSeconds(unsigned long *par) {
  //get the current number of seconds
   *par = time( NULL );

   return;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Number of seconds :1294450468

ポインタを受け入れることができる関数は、次の例に示すように配列も受け入れることができます-

#include <iostream>
using namespace std;

//function declaration:
double getAverage(int *arr, int size);

int main () {
  //an int array with 5 elements.
   int balance[5] = {1000, 2, 3, 17, 50};
   double avg;

  //pass pointer to the array as an argument.
   avg = getAverage( balance, 5 ) ;

  //output the returned value
   cout << "Average value is: " << 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;
}

上記のコードを一緒にコンパイルして実行すると、次の結果が生成されます-

Average value is: 214.4