C++ Anfänger mit drei Fragen

Hallo!
Ich habe gerade angefangen c++ zu lernen.
Hier sind einige Fragen, ich hoffe jemand kann mir helfen, das würde mir den Einstieg ungemein vereinfachen.
1)
Kann mir jemand sagen was der Unterschied zwischen diesen beiden Programmen ist?
Einmal steht da void und ein anderes mal int. Int bedeutet integer, aber was bedeutet void und welche Funktion hat es?
Muss am Ende eigentlich return stehen oder steht es im zweiten Fall wegen dem void nicht da?

#include

int main()
{
cout
void main()
{
cout

Einmal steht da void und ein anderes mal int. Int bedeutet
integer, aber was bedeutet void und welche Funktion hat es?
Muss am Ende eigentlich return stehen oder steht es im zweiten
Fall wegen dem void nicht da?

void bedeutet in dem Fall, dass die Funktion keinen Rückgabewert hat. Eine Funktion muss nicht mit einem return-Statement enden (solange sie keinen Rückgabewert hat). Wenn die Abarbeitung das Ende einer Funktion erreicht wird zurückgekehrt. Normalerweise sollte der Compiler dann irgendwas sagen, und wenn doch etwas übergeben wird ist das undefiniert.

#include

C+±Header haben die Endung „.h“ schon seit etlichen Jahren nicht mehr. "#include " reicht. Achte auch darauf, dass du namespaces richtig benutzt.

double x;
x=10+ 1/3;
cout

Hallo.

#include

C+±Header haben die Endung „.h“ schon seit etlichen Jahren
nicht mehr. "#include " reicht. Achte auch
darauf, dass du namespaces richtig benutzt.

‚namespace std;‘ in diesem Fall

double x=10%4;
cout

Hallo nochmal.

‚namespace std;‘ in diesem Fall

‚using namespace std;‘ wäre wohl besser. Beispiel unter http://www.volkard.de/vcppkold/die_klasse_string.html

mfg M.L.

Vielen Dank für die schnellen Antworten

Noch eine Frage hab ich. Was ist das hier:

Note zeugnis[n];

Welche dieser Aussagen sind richtig:

  1. Note ist ein Feld von zeugnis-Objekten
  2. n uss eine integer- Konstante sein
  3. der letzte Eintrag im Feld zeugnis hat den Index n

Gruß
HansPeter

Hallo nochmal.

Vielen Dank für die schnellen Antworten

Bitte :smile:

Noch eine Frage hab ich. Was ist das hier:

Note zeugnis[n];

Welche dieser Aussagen sind richtig:

  1. Note ist ein Feld von zeugnis-Objekten

Einfacher wäre z.B. ‚int zeugnis[]‘ und in der Zählschlaufe dann
'for (int n=0;n n-1

HTH
mfg M.L.

Hallo,

Note zeugnis[n];

Definition der Variablen names ‚zeugnis‘ vom Typ: Feld von ‚Note‘ der Länge 6.

Welche dieser Aussagen sind richtig:

  1. Note ist ein Feld von zeugnis-Objekten

Einfacher wäre z.B. ‚int zeugnis[]‘ und in der Zählschlaufe
dann
'for (int n=0;n

int zeugnis[12];
zeugnis[0] = 1;
for (int n = 1; n

  1. n muss eine integer- Konstante sein

n muss ganzzahlig sein, aber nicht konstant.

genau:

int n;
cin \>\> n;
int f[n];

funktioniert mit dem g++.

Dann würde man
z.B.
immer nur zeugnis[6] ausgeben

??? Es handelt sich um eine Definition!

  1. der letzte Eintrag im Feld zeugnis hat den Index n

n ist der Zählindex und geht bei C++ mit ‚0‘ (=Null) los ->
n-1

Dem stimme ich zu.

Gruß
Diether

Hallo HansPeter,

Note zeugnis[n];

Note ist ein Feld von zeugnis-Objekten

Nein, andersrum. Das Feld (Array) heisst zeugnis und besteht aus Note-Objekten.

Die anderen beiden Fragen wurden ja schon beantwortet…

kvida

Hallo nochmal.

Note zeugnis[n];

Definition der Variablen names ‚zeugnis‘ vom Typ: Feld von
‚Note‘ der Länge 6.

stimmt

Welche dieser Aussagen sind richtig:

  1. Note ist ein Feld von zeugnis-Objekten

Einfacher wäre z.B. ‚int zeugnis[]‘ und in der Zählschlaufe
dann
'for (int n=0;n

int zeugnis[12];
zeugnis[0] = 1;
for (int n = 1; n

okay, sieht besser aus :smile:

  1. n muss eine integer- Konstante sein

n muss ganzzahlig sein, aber nicht konstant.

genau:

int n;
cin >> n;
int f[n];

funktioniert mit dem g++.

Dann würde man
z.B.
immer nur zeugnis[6] ausgeben

??? Es handelt sich um eine Definition!

Wenn ich n konstant bei 6 belassen würde, gäbe es nur zeugnis[6] zum Ausgeben.

  1. der letzte Eintrag im Feld zeugnis hat den Index n

n ist der Zählindex und geht bei C++ mit ‚0‘ (=Null) los ->
n-1

Dem stimme ich zu.

Danke

mfg M.L. (mittlerweile eher Java-gewöhnt :wink: )

Hallo,
laut C++ Standard müssen Feldgrenzen durch einen konstanten Ausdruck definiert werden, was in diesen Fall bedeutet dass die Größe des Arrays beim Erstellen des Programms der Compiler direkt bestimmt werden können muss. Dass gcc den Code auch so aktzeptiert verwundert mich doch etwas da das Feld somit zur Laufzeit des Programms erstellt werden muss. Ich bin mir sicher dass andere Compiler hier weniger nachsichtig sind…

const n = 42;

int arrayA[n];
int arrayB[42]

Grüße,
Daniel Raffler