Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C - Variabele argumenten

Soms kom je een situatie tegen waarin je een functie wilt hebben die een variabel aantal argumenten kan aannemen, d.w.z. parameters, in plaats van een vooraf gedefinieerd aantal parameters. De programmeertaal C biedt een oplossing voor deze situatie en u mag een functie definiëren die een variabel aantal parameters kan accepteren op basis van uw vereisten. Het volgende voorbeeld toont de definitie van een dergelijke functie.

int func(int, ... ) {
   .
   .
   .
}

int main() {
   func(1, 2, 3);
   func(1, 2, 3, 4);
}

Opgemerkt moet worden dat de functie func() heeft zijn laatste argument als ellipsen, d.w.z. drie punten (... ) en die net voor de ellipsen is altijd een int die het totale aantal doorgegeven variabele argumenten zal vertegenwoordigen. Om dergelijke functionaliteit te gebruiken, moet u gebruik maken van stdarg.h header-bestand dat de functies en macro's biedt om de functionaliteit van variabele argumenten te implementeren en de gegeven stappen te volgen −

  • Definieer een functie met zijn laatste parameter als ellipsen en die net voor de ellipsen is altijd een int die het aantal argumenten zal vertegenwoordigen.

  • Maak een va_list typ variabele in de functiedefinitie. Dit type is gedefinieerd in het kopbestand stdarg.h.

  • Gebruik int parameter en va_start macro om de va_list . te initialiseren variabele naar een lijst met argumenten. De macro va_start is gedefinieerd in het kopbestand stdarg.h.

  • Gebruik va_arg macro en va_list variabele om toegang te krijgen tot elk item in de argumentenlijst.

  • Gebruik een macro va_end om het geheugen op te ruimen dat is toegewezen aan va_list variabel.

Laten we nu de bovenstaande stappen volgen en een eenvoudige functie opschrijven die het variabele aantal parameters kan nemen en hun gemiddelde kan retourneren −

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

double average(int num,...) {

   va_list valist;
   double sum = 0.0;
   int i;

   /* initialize valist for num number of arguments */
   va_start(valist, num);

   /* access all the arguments assigned to valist */
   for (i = 0; i < num; i++) {
      sum += va_arg(valist, int);
   }
	
   /* clean memory reserved for valist */
   va_end(valist);

   return sum/num;
}

int main() {
   printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
   printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op. Opgemerkt moet worden dat de functie gemiddelde() is twee keer aangeroepen en elke keer vertegenwoordigt het eerste argument het totale aantal variabele argumenten dat wordt doorgegeven. Alleen ellipsen worden gebruikt om een ​​variabel aantal argumenten door te geven.

Average of 2, 3, 4, 5 = 3.500000
Average of 5, 10, 15 = 10.000000

C Taal

  1. Soorten door de gebruiker gedefinieerde functies in C-programmering
  2. C opslagklasse
  3. Geef arrays door aan een functie in C
  4. Python-functieargumenten
  5. C++ variabelen en typen:int, double, char, string, bool
  6. C Variabele, gegevenstypen, constanten
  7. Verilog-opdrachten
  8. C - Variabelen
  9. C - Functies
  10. C - Aanwijzers
  11. C - Bitvelden