Array als Kopie an Funktion übergeben
-
Benutz std::vector
http://www.cplusplus.com/reference/stl/vector/oder std::array (C++11), die tr1 Implementierung oder das von Boost.
Ansonsten musst du da selbst mit new hantieren und eine Kopie anlegen etc.
Auf dem Stack geht das i.A nicht.
-
unskilled schrieb:
#include <vector> void foo(const std::vector<void*>& zeiger_array) { /* ... */ } int main() { std::vector<void*> zeiger_array; zeiger_array.push_back(static_cast<void*>(&var1); zeiger_array.push_back(static_cast<void*>(&var2); zeiger_array.push_back(static_cast<void*>(&var3); zeiger_array.push_back(static_cast<void*>(&var4); zeiger_array.push_back(static_cast<void*>(&var5); }und: doch, geht.
bb
iii, void Zeiger
-
unskilled schrieb:
...und: doch, geht.
bb
Die static_casts sind unnötig und hässlich.
Hacker schrieb:
iii, void Zeiger
iii, ein Hacker
-
Squicky schrieb:
Dieses Array möchte ich nun als Kopie an die Funktion
sscanf (zeichenfolge, formatzeichenfolge, zeigerarray)
übergeben.Wie und warum?
Squicky schrieb:
Wie kann ich ein Array (Bytefolge) einer Funktion als Kopie (auf dem Stack?!?) übergeben?
Überhaupt nicht.
sscanfgibt das nicht her.
-
314159265358979 schrieb:
unskilled schrieb:
...und: doch, geht.
bb
Die static_casts sind unnötig und hässlich.
Hacker schrieb:
iii, void Zeiger
iii, ein Hacker
Iii, eine Transzendente Zahl
-
Ein bisschen Bi schadet nie. gnihihi
-
314159265358979 schrieb:
Ein bisschen Bi schadet nie. gnihihi

-
Zum Teil ja.
Dies funktioniert.struct int2 { unsigned int a[2]; }; int main() { char txt[] = "abc 13 abc 25"; char format[] = "abc %d %*s %d"; int a, b; a = 0; b = 0; struct int2 ar_int2; ar_int2.a[0] = (unsigned int) &a; ar_int2.a[1] = (unsigned int) &b; int ret = sscanf(txt, format, ar_int2); cout << "ret: " << ret << " | " << a << " | " << b << endl; return 0; }Aber diese Lösung arbeitet leider mit einer festen Arraylänge (2), und deshalb meine Anfrage.
-
benutz C++, und nicht C. und vor allem (!!!) misch es nicht (sscanf <--> cout)
und zu C++ gehört wie schon genannt vector, string, array oder was ähnliches. nachzulesen in jeden halbwegs guten buch oder auf refenrenz seiten zu der STL
-
Skym0sh0 schrieb:
benutz C++, und nicht C. und vor allem (!!!) misch es nicht (sscanf <--> cout)
und zu C++ gehört wie schon genannt vector, string, array oder was ähnliches. nachzulesen in jeden halbwegs guten buch oder auf refenrenz seiten zu der STL
Sag statt "vector, string, array oder was ähnliches" lieber Container (oder STL).
Was hat sscanf bitte mit cout zu tun?
Im letzten Punkt hast du natürlich(!) Recht.
-
struct int2 { unsigned int a[2]; }; int main() { char txt[] = "abc 13 abc 25"; char format[] = "abc %d %*s %d"; int a, b; a = 0; b = 0; struct int2 ar_int2; ar_int2.a[0] = (unsigned int) &a; ar_int2.a[1] = (unsigned int) &b; int ret = sscanf(txt, format, ar_int2); cout << "ret: " << ret << " | " << a << " | " << b << endl; return 0; }Iiiii!!!!!
Schöner kommt gleich. :xmas1: