BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <stdarg.h> > va_copy

va_copy() fonksiyonu

Bildirim

void va_copy(va_list dest, va_list src); (Makro) (C99)

Açıklama

Va_start veya va_copy makrosu ile değer ataması yapılan bir ap değişkeni için temizleme yapar.

Parametreler

dest: va_list veri türünden değer atanacak bir değişkeni gösterir.

src: va_list veri türünden dest değişkenine değer atamada kullanılacak bir değişkeni gösterir.

Dönüş değeri

Yok.

Örnek


#include <stdio.h>
#include <stdarg.h>

void yazdir(int param, ...);

int main(void) {
    yazdir(5, 21, 7, 16, 124, 85);
    printf("\n");
    yazdir(3, 127, 65, 42);
    printf("\n");
    yazdir(4, 246, 57, 35, 72);

    return 0;
}

void yazdir(int param, ...) {
  va_list ap1, ap2;
  int id;

  va_start(ap1, param);
  va_copy(ap2, ap1);
  va_end(ap1);

  for(id=0; id<param; id++) {
      printf("%d ", va_arg(ap2, int));
  }

  va_end(ap2);
}

Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:

21 7 16 124 85
127 65 42
246 57 35 72

Yukarıdaki program, önce ilk parametresine ilk parametreden sonra yer alan parametre sayısını diğer parametrelere de int değerler atayarak yazdir() fonksiyonunu 3 kez çağırır. Fonksiyon içinde va_start makrosu parametre sayısını kullanarak ap1 değişken değerini doldurur. Ap1 değişken değerini ap2 değişken değerine kopyaladıktan sonra api1 değişken değerini siler. Bir döngü yoluyla va_arg makrosunu kullanarak her defasında bir parametre değerini ap2 değikeninden alarak ekrana yazar. va_end makrosu ile ap2 değişken değerini siler.