Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Globales, Dynamisches Array

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
28.11.2004, 08:45 Uhr
RedEagle



Hi
Ich brauche ein Globales, Dynamisches Array einer Klasse (Hab zum Test einfach ne integer-var. genommen).

Da ich zu beginn des Programm noch nicht weiß wie groß das Array sein soll (Wird später aus ner *.ini gelesen) Hab ich mir folgendes überlegt.


C++:
#include <iostream.h>
using namespace std;

  int *ptotest[];

int output();

int main()
{
  int test[2] = {1,2}
  ptotest = &test; //Adresse des Arrays dem Pointer zuweisen (Das geht nicht :( )
  return 0;
}

int output()
{
  cout << ptotest[0] << " " << ptotest[1] << endl;
}



1. Stimmt das überhaupt mit den "&" und so?? (Hab sowas noch nie vorher gemacht.
2. Wie bringe ich das zum laufen??
--
MFG RedEagle

Dieser Post wurde am 28.11.2004 um 08:46 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.11.2004, 09:47 Uhr
(un)wissender
Niveauwart


1. Kein iostream.h verwenden
2. int *ptotest[]; ist hier int ** ptotest[];
3. Semikolon setzten.


C++:
#include <iostream>
using namespace std;

  int * ptotest ;

int output();

int main()
{
  int test[2] = {1,2};
  ptotest = test; //Adresse des Arrays dem Pointer zuweisen (Das geht nicht :( )
  return 0;
}

int output()
{
  cout << ptotest[0] << " " << ptotest[1] << endl;
}




Bearbeitung:

Natürlich ist dein Array nicht dynamisch, sondern statisch, aber ich denke, dass du das weißt.


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 28.11.2004 um 09:49 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.11.2004, 09:52 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


vorsicht mit dieser konstruktion:


C++:
#include <iostream>
using namespace std;

  int * ptotest ;

int output();
int input();

int main()
{
  input();
  output();
  return 0;
}

int input()
{
  int test[2] = {1,2};
  ptotest = test; // test ist schon ein pointer (das meinte unwissender)  
}

int output()
{
  cout << ptotest[0] << " " << ptotest[1] << endl; // hier kracht es dann, da "test" nur in input gültig!
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.11.2004, 09:58 Uhr
~Abel
Gast


Hi,
Du machst einiges falsch. Schreib lieber so:


C++:
#include <iostream>
using namespace std;

  int *ptotest;

int output();

int main()
{
  int test[2] = {1,2};
  ptotest = test; //ptotest nimmt die Anfangsadresse von test
  output();
  return 0;
}

int output()
{
  cout << *ptotest << " " << *(ptotest+1) << endl;//mit *ptotest gibst seinen Inhalt aus
  return(0);
}




Bearbeitung von typecast:
Na, was glaubst du? Natuerlich. Ich hab schon wieder die cpp-Tags fuer dich gesetzt

Dieser Post wurde am 28.11.2004 um 12:46 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.11.2004, 10:21 Uhr
RedEagle




--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.11.2004, 10:35 Uhr
(un)wissender
Niveauwart


@Flo
In diesem Fall von Red Eagle ging das gerade noch klar, da er test in main definiert hatte. Schlechter Stil + potentiell gefährlich ist es trotzdem, keine Frage.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.11.2004, 13:49 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von (un)wissender:
@Flo
In diesem Fall von Red Eagle ging das gerade noch klar, da er test in main definiert hatte. Schlechter Stil + potentiell gefährlich ist es trotzdem, keine Frage.

jo das war mir schon bewusst das es noch "ginge" solang er test in main definiert, da main ja logischerweise zuletzt verlassen wird Nur sollte man sich solche Konstruktionen besser gar nicht angewöhnen.

und

ptotest[0] und ptotest[1] funktioniert, da muss man nicht dereferenzieren (das macht einem der []-operator)
--
class God : public ChuckNorris { };

Dieser Post wurde am 28.11.2004 um 13:50 Uhr von FloSoft editiert.
 
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: