Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Grundlagenfrage - Feld[n]

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
04.04.2005, 21:10 Uhr
~_radix
Gast


Hi Leutz,

kann mann irgendwie etwas coden ala:

C++:
#include <iosteam.h>

int mani()
{
cin >> n;
int Feld[n];
return 0;
}



...ohne, dass der Compiler was dagegen hat?

(keine verkettete Liste oder so wat)

MfG radix


Bearbeitung von Pablo:

Benutze die CPP Tags selber.


Dieser Post wurde am 04.04.2005 um 21:18 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.04.2005, 00:02 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


das geht nicht weil die menge an speicher die du haben möchtest erst zur laufzeit bereit steht... du musst den speicher in dem fall mit new allokieren (bzw mit malloc wenns c sein soll) und mit delete wieder freigeben (in c mit free)


C++:
#include <iosteam>
using namespace std;
int main(){
size_t n;
cin >> n;
int *Feld=new int[n];
//mit dem feld arbeiten

//am ende speicher wieder freigeben
delete [] Feld;
}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.04.2005, 07:57 Uhr
virtual
Sexiest Bit alive
(Operator)


Es kommt drauf an:

in C geht das natürlich, seit dem C99 Standard problemlos:

C++:
#include <stdio.h>

int main()
{
        int n;

        scanf("%d", &n);

        int Feld[n];
        return 0;
}


Im veralteten Standard ging es nicht, da kann man sich aber - wenn vorhanden - der alloca Routine bedienen. Ebenso in C++, allerdings ist hier die EInschränkung, daß man es nur für primitive Datentypen machen darf.
alloca ist wie malloc, nur daß man kein free braucht, weil der Speicher beim Verlassen der Funktion automatisch freigegeben wird.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.04.2005, 08:44 Uhr
Pablo
Supertux
(Operator)


Ist alloca ANSI C? In den man pages (eines Debian Rechners meiner Uni) steht nämlich nichts darüber.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.04.2005, 08:52 Uhr
typecast
aka loddab
(Operator)


Meine man-page sagt folgendes dazu:


Code:
CONFORMING TO
       There is evidence that the alloca function appeared in 32v, pwb,  pwb.2,  3bsd,  and  4bsd.
       There  is  a man page for it in BSD 4.3.  Linux uses the GNU version.  This function is not
       in POSIX or SUSv3.


--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.04.2005, 09:02 Uhr
stephanw
localhorst


Warum nicht einfach std::vector ?

C++:
#include <vector>
#include <iostream>

void f ()
{
  size_t n;
  std::cin >> n;
  std::vector<int> feld (n);  // "array" der Länge n
  feld [10] = 10;
}


--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
05.04.2005, 17:08 Uhr
~_radix
Gast


Thanx, wie wird denn der Spaicher bei "normal" deklarierten Variablen, Arrays, usw. angelegt, und was hat static für Auswirkungen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.04.2005, 17:11 Uhr
virtual
Sexiest Bit alive
(Operator)


"normal" Deklarierte Variablen sind implizit "auto" Deklariert und vergessen ihren Inhalt, wenn der Block verlassen wird, in dem sie deklariert sind. "static" Variablen sind nicht vergesslich. heißt zB daß man Variable-sizeArrays, wie Du sie willst, nicht mit static Variablen nutzen kann. alloca sollte man auch nicht verwenden, weil die Initialsierung einer static Varaiblen nur einmalig ist.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
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: