Pointer und Referenzen C++

benito

Grünschnabel
hallo alle zusammen,

ich suche den c++ Programmcode zu der folgenden Problematik.

Geben Sie bitte eine Funktion zum Testen von wieOft an.
int testWieOft();
Im Rumpf von testWieOft sind:
3 int?Variablen, iV1, iV2, iV3 zu vereinbaren und zu initialisieren.
?? iV1 sei mit 1,
?? iV2 sei mit 2
?? iV3 sei mit 3 initialisiert.
Weiter seien 3 int?Adress?Variablen iPv1, iPv2, iPv3 zu vereinbaren und zu intialisieren.
?? iPv1 sei mit der iV1?Referenz,
?? iPv2 sei mit der iV2?Referenz
?? iPv3 sei mit der iV3?Referenz initialisiert.
Geben Sie bitte anschliessend im Rumpf von testWieOft
6 wieOft()?Aufrufe, so dass
1. Jede Variable in genau zwei verschiedenen wieOft()?Aufrufen vorkommt und
2. Sichergestellt ist, dass genau die o. a. Ausgaben und keine anderen an
der Aufrufstelle zurueckgeliefert werden.

Ich habe das so verstanden, daß in er Funktion testwieoft() halt die Variablen zu deklarieren sind und im Rumpf der testwieoft() 6 mal die wieoft() Funktion aufgerufen werden soll, die die Variablen an die Aufrufstelle ...ja 1. von welcher Funktion zurückliefert und 2.wie soll das gehen das jede Variable zwei mal in zwei verschiedenen wieoft() Aufrufen vorkommt.
Ich bin ein Anfänger , aber ich habe gehört das man in "nicht main Funktionen" keine anderen Funktionen aufrufen soll..
 
1. Ist das hier kein Hausaufgaben-Forum, es wird somit Eigeninitiative erwartet. Wenn du also schon Code hast, der nicht so funktioniert wie er soll, so solltest du uns diesen zeigen.

In einer "nicht main Funktion" kann und wird man natürlich Funktionen aufrufen, ich weiß nicht, wo du das herhast.


Gruß,

badday
 
aso verstehe.also ich habe keinen code gepostet.richtig.nur die aufgabe und meine gedanken dazu.sorry.
hier ist er : ( wie kann ich ihn in einer Bilddatei posten ? bin wie gesagt absoluter neulig hier und in c++ )


#include <cstdlib>
#include <iostream>

using namespace std;

int wieOft()

{




}

int testWieOft()
{
int iV1=1, iV2=2, iV3=3;
int *iPv1=&iV1, *iPv2=&iV2, *iPv3=&iV3;

wieOft();
wieOft();
wieOft();
wieOft();
wieOft();
wieOft();

}


int main()
{

testWieoft();
system("PAUSE");
return 0;
}

ich weiss nicht genau welche parameter ich an die wieoft() fkt. packen soll xD
funktionen ? das stand in einem buch bzw. script , daß es nicht erwünscht ist, funktionen in funktionen aufzurufen.


gruß

b.
 
Also Code solltest du in Tags machen [code=cpp] dein Code [/code]

Ich weiß nicht, ob unter int-Adress-Variablen Zeiger gemeint sind, ich nehme es mal an.

Dann kannst du folgendes machen:

C++:
void wieOft(int *i1, int *i2)
{
++(*i1);
++(*i2);
}

Was passiert hier? wieOft() übernimmt 2 Zeiger auf integer-Objekte. D. h. ihm werden nicht die Objekte übergeben, die er dann kopiert und somit temp. Objekte erzeugt, die einen Gültigkeitsbereich besitzen, der auf die Funktion beschränkt ist (genannt: pass-by-value), sondern hier wird die Adresse des tatsächlichen Objekts, dessen Gültigkeitsbreich in deinem Fall der Rumpf der Funktion testWieOft ist. Es wird also nicht das Objekt an sich übergeben, sondern ein Verweis auf dieses Objekt.

Was bedeutet
C++:
++(*i1);
?
Zunächst wird hier der Zeiger dereferenziert, d. h. durch "*" (sog. Dereferenzierungsoperator) erhalten wir Zugriff auf das Objekt, auf das i1 zeigt, sozusagen die in testWieOft definierte Variable. Das "++" davor ist ein Pre-inkrementoperator. Ob du hier den Pre-Inkrementoperator oder den Post-Inkrementoperator benutzt, spielt hier keine Rolle.

Solltest du noch Fragen haben, stelle sie einfach ;)
 
vielen dank:)

ich glaube auch das zeiger gemeint sind.

übrigens ..zitieren kann ich auch nicht ...sch..xD

aber ich bin mir nicht sicher, ob die variablen inkremeniert werden sollen ..
-->
6 wieOft()?Aufrufe, so dass
1. Jede Variable in genau zwei verschiedenen wieOft()?Aufrufen vorkommt und
2. Sichergestellt ist, dass genau die o. a. Ausgaben und keine anderen an
der Aufrufstelle zurueckgeliefert werden.

ich habe das so verstanden, das jede variable einmal mit referenz und einmal mit zeigern übergeben werden können, weil so kommt jede variable 2 mal in 2 verschiedenen wieoft() fkt vor .. ..ich verstehe die aufgabenstellung einfach nicht .. habe das so gemacht ..xD

C++:
wieOft(iV1,&iPv1);
                wieOft(iV2,&iPv2);
                wieOft(iV3,&pIv3);
                wieOft(&iV1,iPv1);
                wieOft(&iV2,iPv2);
                wieOft(&iV3,iPv3);
 
Weiter seien 3 int?Adress?Variablen iPv1, iPv2, iPv3 zu vereinbaren und zu intialisieren.
?? iPv1 sei mit der iV1?Referenz,
?? iPv2 sei mit der iV2?Referenz
?? iPv3 sei mit der iV3?Referenz initialisiert.
Gute Frage, was hier nun mit Referenz gemeint ist.

Du kannst das ganze nat. auch mit Referenzen machen:
Code:
void wieOft(int &i1, int &i2)
{
++i1;
++i2;
}
Nur: Wofür solltest du dann diese "int?Adress?Variablen" benutzen?


Offengestanden finde ich die Aufgabenstellung auch verwirrend, und bevor ich dir was falsches sage, lasse ich es lieber ;)
 
Zurück