?
Hi
Du schreibst "Diese Array möchte ich jetzt als Referenz einer Funktion weitergeben,..." aber das tust du nicht. Deine Funktions-Deklarationen enthalten nur char Pointer. Eine Referenz wuerde so aussehen:
void Funktion2(char* & ArrayRef)
{
ArrayRef = "Parameterübergabe leicht gemacht";
}
void Funktion1(char* & ArrayRef)
{
Funktion2(ArrayRef);
}
Allerdings sind das jetzt Referenzen auf char Pointer. Deswegen kekommst du in deinem Code jetzt Compiler-Fehler, weil ein Char Array ebend kein Char Pointer ist.
Eine Loesung fuer dein Problem besteht darin, die C Run-Time library Funktion 'strncpy' zu benutzen, etwa so:
#include <string.h>
void Funktion2( char* ArrayRef)
{
strncpy( ArrayRef, "Parameterübergabe leicht gemacht", 200);
}
Aber ganz ehrlich, ich wuerde das so nicht machen, aus mehreren Punkten:
Pointer sind Vertrauensobjekte und man kann nur auf ihre Integritaet vertrauen, ausserdem sollte immer auf NULL Pointer geprueft werden.
Die Laengenangabe sowohl von deinem Buffer als auch von dem String-Literal werden nicht wirklich beachtet.
Bei Laengenaenderungen von deinem Array musst du auch den Code in der Funktion aendern.
Ich wuerde die std::string Klasse aus der STL benutzen und auf Arrays und Pointer verzichten.
#include <string>
std::string TestString;
void Funktion2( std::string & ArrayRef)
{
ArrayRef = "Parameterübergabe leicht gemacht";
}
void Funktion1( std::string & ArrayRef)
{
Funktion2( ArrayRef);
}
int main( int argc, char* argv[])
{
Funktion1( TestString);
return 0;
}