berbagi seputar ilmu pengetahuan dan teknologi

Membuat Functions dengan Variable Argument Lists di C and C++

Membuat Functions dengan Variable Argument Lists di C and C++ 

Mungkin Anda ingin memiliki fungsi yang akan menerima sejumlah nilai-nilai dan kemudian kembali rata-rata. Anda tidak tahu berapa banyak argumen akan diteruskan ke fungsi. Salah satu cara Anda bisa membuat fungsi akan menerima pointer ke array. Cara lain adalah dengan menulis fungsi yang dapat mengambil sejumlah argumen. Jadi Anda bisa menulis avg (4, 12.2, 23.3, 33.3, 12.1); atau Anda bisa menulis avg (2, 2,3, 34,4); Beberapa fungsi perpustakaan dapat menerima daftar variabel argumen (seperti printf terhormat). Untuk menggunakan fungsi dengan variabel jumlah argumen, atau lebih tepatnya, fungsi tanpa nomor set argumen, Anda akan menggunakan file header stdarg. Ada empat bagian yang dibutuhkan: va_list, yang menyimpan daftar argumen, va_start, yang menginisialisasi daftar, va_arg, yang mengembalikan argumen berikutnya dalam daftar, dan va_end, yang membersihkan daftar argumen variabel. Setiap kali fungsi dinyatakan memiliki jumlah tak tentu argumen, di tempat argumen terakhir Anda harus menempatkan elipsis (yang terlihat seperti '...'), jadi, dalam suatu fungsi (int x, ...); akan memberitahu compiler fungsi harus menerima namun banyak argumen yang menggunakan programmer, selama itu adalah sama dengan setidaknya satu, yang menjadi yang pertama, x. va_list adalah seperti variabel lainnya. Sebagai contoh :

va_list a_list; 

va_start adalah makro yang menerima dua argumen, sebuah va_list dan nama variabel yang secara langsung mendahului elipsis (...). Jadi, dalam fungsi fungsi, untuk menginisialisasi va_list dengan va_start, Anda akan menulis va_start (a_list, x); va_arg mengambil va_list dan jenis variabel, dan mengembalikan argumen berikutnya dalam daftar dalam bentuk apa pun jenis variabel itu diceritakan. Kemudian bergerak ke bawah daftar untuk argumen berikutnya. Misalnya, va_arg (a_list, ganda) akan kembali argumen berikutnya, dengan asumsi itu ada, dalam bentuk ganda. Waktu berikutnya yang disebut, itu akan mengembalikan argumen berikut nomor kembali terakhir, jika ada. Untuk menunjukkan bagaimana setiap bagian bekerja, mengambil fungsi contoh:

#include 
#include 

using namespace std;

// this function will take the number of values to average
// followed by all of the numbers to average
double average ( int num, ... )
{
  va_list arguments;                     // A place to store the list of arguments
  double sum = 0;

  va_start ( arguments, num );           // Initializing arguments to store all values after num
  for ( int x = 0; x < num; x++ )        // Loop until all numbers are added
    sum += va_arg ( arguments, double ); // Adds the next value in argument list to sum.
  va_end ( arguments );                  // Cleans up the list

  return sum / num;                      // Returns the average
}
int main()
{
    // this computes the average of 13.2, 22.3 and 4.5 (3 indicates the number of values to average)
  cout<< average ( 3, 12.2, 22.3, 4.5 ) << endl;
    // here it computes the average of the 5 values 3.3, 2.2, 1.1, 5.5 and 3.3
  cout<< average ( 5, 3.3, 2.2, 1.1, 5.5, 3.3 ) << endl;
}

Hal ini tidak selalu ide yang baik untuk menggunakan daftar argumen variabel setiap saat, karena ada potensi untuk asumsi nilai yang dari satu jenis, sementara itu sebenarnya lain, seperti null pointer yang diasumsikan integer. Akibatnya, daftar argumen variabel harus digunakan hemat.
Tag : C
0 Komentar untuk "Membuat Functions dengan Variable Argument Lists di C and C++ "

Back To Top