Ausgabe

Ausgabe

Beitragvon reynhold » 09.07.2010 10:55

Code: Alles auswählen
#include<iostream>
using namespace std;

void f(int* q){
     
     int i7 = *q;
     
     (*q) +=3;
     i7 +=2;
     cout << "Fkt1: " <<i7<<endl;
     }
     
void f(int& q) {
     q+=1;
     cout<< "Fkt2: " << q << endl;
     }
     
int f(int r, int s) {
    if (r<=s) return 0;
    return (r-s) + f(r-1,s+1);
}

int main (){
    int i1;
    cin >>i1;
    int i2 =i1;
    f(i1);
    cout <<"Main1: "<<i1<<endl;
    cout<<"i2: "<<i2<<endl;
    f(&i2);
    cout <<"Main2: "<<i2<<endl;
    cout <<"Main3: "<<f(7,3) <<endl;
}


Kann mir jemand vielleicht erklären weshalb bei diesem Programm zuerst f(int&q) ausgegeben wird...?
Und erst dann i1 und f(int*q)...

Wäre sehr dankbar für Tipps! :)
Benutzeravatar
reynhold
 
Beiträge: 184
Registriert: 26.10.2008 12:09

Re: Ausgabe

Beitragvon CommanderTomalak » 11.07.2010 13:44

weil der Aufruf f(&i) eine Funktion aufruft, die einen Pointer erwartet, es wird hier nämlich die Adresse der Variable als Parameter übergeben, und um die aufzunehmen braucht man einen Pointer.
f(i) dagegen ruft die Funktion auf, die eine integer erwartet, und die einzige, die hier zur Verfügung steht, ist die, die die Variable als Referenz übernimmt.

Das Beispiel ist ziemlich fies, weil man denken könnte, dass f(&i) die Funktion f(int& i) aufruft. Das ist aber nicht der Fall!
"Das Volk hat das Vertrauen der Regierung verscherzt. Wäre es da nicht doch einfacher, die Regierung löste das Volk auf und wählte ein anderes?"
- Bertolt Brecht
CommanderTomalak
 
Beiträge: 204
Registriert: 19.01.2009 00:42
Wohnort: Karlsruhe


Zurück zu Programmieren

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron