call by value mit char
-
Hi leute ich will einer Funktion call bei value einen char array übergeben!
ich glaub das übergeben funktioniert einigermasen aber wenn ich dann denn wert verwenden will bring er mir fehler...
der code:#include <iostream> #include <cstring> using namespace std; void callbyreference(char &test){ strncpy(test, "xyz", 3); } main(){ char c[] = "abc"; callbyreference(c); cout << "\n" << c; }Die Fehler:
C:\...\callbyreference.cpp In functionvoid callbyreference(char&)': 9 C:\\...\\callbyreference.cpp invalid conversion from \char' to `char*'
9 C:\...\callbyreference.cpp initializing argument 1 ofchar* strncpy(char*, const char*, size_t)' C:\\...\\callbyreference.cpp In functionint main()':
15 C:\...\callbyreference.cpp invalid initialization of non-const reference of type 'char&' from a temporary of type 'char*'
8 C:\...\callbyreference.cpp in passing argument 1 of `void callbyreference(char&)'Was mach ich da Falsch? denn code hab ich jetzt in dev-cpp compillert(...versucht) mit ms visual c++ 2005 express edition schauts nicht viel anders aus...
Danke
-
char& ist eine Referenz auf char. char[] ist ein Array von chars und kann in ein char*, also einen Zeiger auf char, aber nicht in char& umgewandelt werden. Das sagt dir dein Compiler. Nun such dir dein Buch heraus, und schau, was das bedeutet.
-
mach draus:
#include <iostream> #include <cstring> using namespace std; void callbyreference(char &test) { strncpy(&test, "xyz", 3); } main() { char c[] = "abc"; callbyreference(*c); cout << "\n" << c; }
-
a293 schrieb:
Hi leute ich will einer Funktion call bei value einen char array übergeben!
Das ist nicht möglich. Eine Einschränkung, die von C geerbt wurde. Ein Array kann niemals der Typ eines Parameters oder Rückgabewertes einer Funktion sein.
-
lässt sich aber ganz leicht ein Workaround basteln

struct TBlah { int arr[10]; TBlah(TBlah &cp) { for(int i=0;i<10;++i) arr[i] = cp.arr[i]; } }; TBlah Funktion_Die_Ein_Array_Als_Parameter_Hat_Und_Zurück_gibt(TBlah param) { return param; }(die Funktion ist völlig sinnlos, falls einer den Sinn suchen sollte)
-
Funktion_Die_Ein_Array_Als_Parameter_Hat_Und_Zurück_gibtdu sollst nicht lügen.

-
camper schrieb:
Funktion_Die_Ein_Array_Als_Parameter_Hat_Und_Zurück_gibtdu sollst nicht lügen.

zumindest tut sie das, was der User will (oder auch nicht will)