Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Funktionsprototyp (Help Please!)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.01.2007, 11:53 Uhr
Marten



Hallo zusammen!

Also vorab mal sorry, wenn meine Frage an euch etwas unwissend klingt! Bin ich aber auch!
Hab mit C++ bis vor 2 Wochen noch nix zu tun gehabt!

Also könnt ihr mich gern als "newbie" bezeichnen! ;-)

Nun sollen wir für einen Vortrag etwas ausarbeiten. Mit dem größten Teil hab ich auch weniger Probleme. Da konnt man genug ausm Netz, bzw aus den Bücher ziehen.

Allerdings sind noch 2 Punkte offen, wo ich einfach nicht weiterkomme.

zum 1.:
Geben Sie den Funktionsprototypen für eine Funktion names auswertung an. Es sollen die folgenden Parameter in der Parameterliste der Funktion übergeben werde:
1. Parameter: ein C-Feld mit float Werten per Zeiger,
2. Parameter: ein Objekt der C++ Klasse string per Referenz
3. Parameter: die Größe des C-Feldes (darf nicht verändert werden)
Als return-Wert soll die Funktino den Maximalwert aus dem übernommenen C-Feld zurückgeben.

->> Hierzu find ich einfach kein Anfang. Würd mir warscheinlich schon helfen, wenn mir jemand die Frage mal in Anfängerdeutsch übersetzt oder den anfang zeigt.

zum 2.
An Funktionen müssen vielfach Parameter übergeben werden. Erläutern Sie den Unterschied zwischen der Übergabe eines Parameters per Wert und der Übergabe per Zeiger.

Hoffe mal hier kann mir einer helfen, steck mit obigen Punkten Irgendwie in ner Sackgasse. Hab das schon etliche Male gelesen, versteh das aber einfach nicht. Alles andere geht ja, nur find ich keine klare Aussage oder Hilfe zu obigen Punkten.

Vielen Dank im voraus!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.01.2007, 12:21 Uhr
Kest
saint


Hi!
zum 1:

C++:
float auswertung(float* float_zeiger, string& str_ref, const int feld_groesse);

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 17.01.2007 um 12:23 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.01.2007, 12:49 Uhr
Kest
saint


zum 2:
Übergabe per Wert:

C++:
#include <stdio.h>

void foo(int wert){
    wert+=1;
}


int main(void)
{
    int zahl=10;
    
    printf("%d\n", zahl);
    foo(zahl);
    printf("%d\n", zahl);

    return 0;
}


Die Variable "zahl" wird an die Funktion "foo" übergeben. Sie kann in der Funktion nicht verändert werden, da die Variable "wert" in der Funktion "foo" eine andere Variable ist, die einfach nur den gleichen Wert wie "zahl" besitzt.


Übergabe per Zeiger:

C++:
#include <stdio.h>

void foo(int *wert){
    *wert+=1;
}


int main(void)
{
    int zahl=10;

    printf("%d\n", zahl);
    foo(&zahl);
    printf("%d\n", zahl);

    return 0;
}


Der Zeiger auf die Variable wird übergeben, die Variable kann verändert werden.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.01.2007, 13:09 Uhr
0xdeadbeef
Gott
(Operator)


...ist das wieder so ein "C++ ist doch auch nur C"-Dozent? Ich vermisse irgendwie die Übergabe per Referenz...

Naja. Ich würd da wahrscheinlich so rangehen:

C++:
#include <iostream>
#include <set>
#include <string>

double foo(double *array, std::string &s, std::size_t n) {
  std::set<double> myset(array, array + n);
  return *myset.rbegin();
}

int main() {
  double bar[] = { 20.12, 3.18, 3912.29 , 31.3, 491.23 };
  std::string s;

  std::cout << foo(bar, s, 5) << std::endl;
}


...wobei ich mich ernsthaft frage, wozu der string da gut sein soll. Ansonsten,

C++:
void foo(int  x) { ++x; }
void bar(int &x) { ++x; }
void baz(int *x) { ++*x }

// ...

int y = 0;

foo(y); // ändert y nicht, da y per Wert übergeben wurde
foo(2); // ist möglich

bar(y); // erhöht y um eins, da y als Referenz übergeben wurde
bar(2); // ist nicht möglich

baz(&y); // Erhöht y um eins, Übergabe per Pointer (&y == Speicheradresse von y)


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 17.01.2007 um 13:09 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.01.2007, 13:14 Uhr
Kest
saint


Hab ich denn was falsch gemacht?
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.01.2007, 13:52 Uhr
0xdeadbeef
Gott
(Operator)


Du hast C-Code geschrieben, wo C++-Code gefragt war. Ich find das falsch.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: