Du bist nicht angemeldet.

Werbeanzeige

1

01.01.2021, 19:25

Call by reference bzw Value

Leute ich hab eine Frage uns zwar habe ich eine Aufgabe die ich nicht lösen kann. Kann mir wer helfen?
Es ist eine Funktions lesetext() zuerstellen, die einen beiebig langen Text von der Taststur einliest und in das übergebene Array schreibt.
Die Funktion erhält einen Pointer auf das array und eine Zahl, die die Größe des arrays angibt.

Die Funtion liest vom Benutzer einen Text ein, solange bis der Benutzer die Eingabe mi t Return beendet oder die max.
Größe des Arrays erreicht ist. Abschluß des arrays mit String-Ende-Zeichen.

Das Hauptprogramm soll die Funktion merhmals mit verschieden großen arrays testen und den jeweils eingelesenen Text zurKontrolleam Conolenfenster ausgeben.

Ich habe schon ein bisschen angefangen aber weiß nicht wie es weiter geht

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>
void lesetext(char t[81]); //Call by value - Funnktion erhält eine Kopie
void lesetext(char* ptr); // Call by Reference-Funktion erhält Zugriff auf das Original
int main(void)
{
//Array erzeugen
char text[81]="Super";
lesetext(text);


return 0;
}

David Scherfgen

Administrator

Beiträge: 10 302

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

01.01.2021, 22:00

Zitat

Die Funktion erhält einen Pointer auf das array und eine Zahl, die die Größe des arrays angibt.

Ich sehe bei deiner Funktion nur einen Parameter.

Bezüglich des Kommentars in deinem Code: Arrays werden in C/C++ nie "by value" übergeben. Sobald du ein Array einer Funktion als Parameter übergibst, wird es zu einem Pointer gemacht. Es wird keine Kopie von dem Array erzeugt. Wenn du das Array aber in eine struct packst, kannst du eine Instanz davon by value oder by reference übergeben, das geht.