Variable Parameter
-
Hallo, ich wollte mal hier nachfragen was mit meinem Code nicht stimmt (weshalb er nicht ausgefùhrt wird).
Sourcecode:#include <stdio.h> #include <stdarg.h> void druck(int a, int b,...); // Prototyp int main(void) // Hauptfunktion { druck(72627,3736283,2937384,82828); return 0; // Keine Fehler } void druck(int a, int b,...) // Original { va_list params; // Argumente lesen int param; // Argument übergebe va_start(params, b); // params initali(adresse) while(param != 0) // Ausgabe des Inhalts { param =va_arg(params, int);// überprüfen printf("%i\n", param); // Duck inhalt } va_end (params); }
-
Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (auch C++0x und C++11) in das Forum C (C89, C99 und C11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Was mir auffällt
- param wird nicht initialisiert
- druck bekommt keine 0 übergeben, welche das Ende der Parameterliste markiert
-
Nochmal formatiert:
#include <stdio.h> #include <stdarg.h> void druck(int a, int b,...); // Prototyp int main(void) // Hauptfunktion { druck(72627,3736283,2937384,82828); return 0; // Keine Fehler } void druck(int a, int b,...) // Original { va_list params; // Argumente lesen int param; // Argument übergebe va_start(params, b); // params initali(adresse) while(param != 0) // Ausgabe des Inhalts { param =va_arg(params, int);// überprüfen printf("%i\n", param); // Duck inhalt } va_end (params); }
param
wird nirgends initialisiert und doch in der Abbruchbedingung verwendet; Clang gab mir eine entsprechende Warnung (das sollte dein Compiler, falls nicht Clang, auch können).
Außerdem bricht die Schleife nur ab wenn eines der Argumente Null ist - was bei dir nicht der Fall ist.
-
Ich dachte das das letzte Argument immer den Wert 0 erhält...
Wie auch immer
Dankeschön
-
LebeWieEinKönig schrieb:
Ich dachte das das letzte Argument immer den Wert 0 erhält...
0 kann ja auch ein gültiger Wert sein.