Hallo! Ich versuch meine Fragen nochmal deutlicher zu stellen:
//Aus dem Zusammenhang gerissen:
int i=5;
i++;
Diese beiden Werte stehen erst zur Laufzeit zur Verfügung !
const int a=i;
Hier hast du ein ähnliches Problem:
const besagt, dass a zur Laufzeit nicht
verändert werden darf, allerdings ist der Wert von i erst zur
Laufzeit bekannt.
char c[a];
Tja und hier hast du das gleiche Problem:
Der Compiler soll fest Speicher für a reservieren, aber da a
erst zur Laufzeit bekannt ist, kann der Compiler das ja nicht
machen …
#define SIZE 5
const int a=SIZE+1;
char c[SIZE+1];
Das es sich um einen Fehler handelt habe ich erkannt und das man ein array mit nicht in Laufzeit berechneten Werten deklarieren kann(siehe dein Makro Beispiel) weiß ich auch. Mein Problem ist–>
Ich möchte den Speicher für das Array erst in der Laufzeit vergeben:
Danach bleibt es dann auch konstant. Ich verstehe auch nicht was da das Problem ist. Andere Programmiersprachen wie Java machen dies möglich. Ein Beispielprogramm wäre eine Benutzereingabe, die die größe eines Arrays bestimmt. Wie also kann man soetwas umsetzen?
Dan noch ein zweites PRoblem. Ist eigentlich das selbe wie das
aus dem Forumseintrag hier drunter.
Wie kann man einen String in ein array aus char#s sprich also
zur Anfangsadresse eines char Arrays = const char* casten?
gibt es dazu funktionen? Dies ist zum Beispiel dazu notwendig
um an system() eine Variable als Parameter zu geben…
MAch mal ein Beispiel.
Gerne!
//Kleines Programmbeispiel
#include
#include
#include
//…
string a;
cin>>a;
system(„hallo.exe“);
//hallo.exe ist ein const char* also ein Array aus chars
//system(a); Wäre ein Konvertierungsfehler
//…
Wie also macht man aus einem String ein const char*
Hab’S bereits mit casten versucht
Nun meine letzte Frage: Gibt es eine Substringfunktion mit der
man Strings *zerschneiden * kann? Die lezte Frage scheint sehr
doof, weil man sowas ja eigentlich in Docus nachschaut, aber
da ich hier schon gerade am posten bin stell ich sie gleich
mit(falls ich nichts finde). werd trotzdem nochmal schaun.
Schau mal nach den Functionen welche mit str…() anfangen.
Achja könnte ja nochmal unter dem Eintrag–>Die Übrigen
Ungeklärten Fragen nachschaun. Die sind alle noch ohne
antwort!
Eigentlich hast du da Antworten erhalten, aber scheinbar
verstehst du sie nicht, da dir einiges an Grundlagen fehlt.
Auf Grund der hier gestellten Frage, hast du auch eindeutig
deine eBOOKS auch noch nicht durchgearbeitet. Wie schon
erwähnt, ist es nicht Aufgabe dieses Forums Grundlagen-Kurse
abzuhalten, dafür gibt es schon genügend Bücher und Kurse
(auch im Netz und gratis).
Wohl war ich bin noch im lehrnprozess und ich dachte gerade dazu gibt es dieses Forum um Fragen zu stellen, bei denen man ohne Hilfe nicht weiterkommt. Letztendlich würden sich natürlich alle hier gestellten Fragen(nicht nur die von mir gestellten) erübrigen, wenn man sich die gesammte weltlitheratur über c++ einverleibt hat.
Ich bin immer noch dabei meine EBOOKS durchzuarbeiten und habe bei verständnisfragen keine anderen ansprechpartner als dich/euch!
Achja könnte ja nochmal unter dem Eintrag–>Die Übrigen
Ungeklärten Fragen nachschaun. Die sind alle noch ohne
antwort!
Eigentlich hast du da Antworten erhalten,
Antworten erkenne ich daraus zwar nicht aber damit mir doch noch jemand hilft hier die Fragen:
1.)Declaration Syntax Error
//Mein Code store.h
namespace bereich{ }
in einer sonst leeren HEaderdatei ein Declaration Syntax
Error ist
also mit VC++6 gibt das keinen fehler.
Das heißt das liegt am Compiler? Ich verwende einen Borland
compiler…
Visal C++: geht
GCC: geht
Borland: geht nicht
Mach mal ein Semikolon rein: namespace bereich{ ; }
Das Semikolon verändert leider gar nichts…
Gibt es eine Möglichkeit die auch bei Borland Compiler möglich zu machen?
2.)Warum ich mein Struct ebenfalls in einer HEaderdatei
nicht:
//Mein Code store.h
struct st{int i;};
typedef st& typ;
//ende
mit typedef verwenden kann (in einer .cpp funzt es so)
aber:
//Anderer Code store.h
struct st2{int i;};
typedef struct st2 typ2;
//ende
funktioniert.
Da hast Du ein falsches Konzept im Schädel 
Variante struct st { int i; };
typedef st& typ;
Ich seh leider keinen Unterschied zu meiner nicht funktionierenden ersten Variante im HEader:
//Erste Variante store.h
struct st{int i;};
typedef st& typ;
//ende
Wie gesagt funktioniert diese nicht, die zweite:
//Variante 2 store.h
struct st2{int i;};
typedef struct st2 typ2;
//ende
jedoch schon!
im Header und
main() {
st myStruct;
typ myRef = myStruct;
… in store.cpp funktioniert ausgezeichnet. Dabei wird
eine Referenz auf myStruct erzeugt. Du kannst nur
nicht typ myRef; schreiben, da die Referenz dann nichts :dereferenziert.
3.) Warum ich nicht in ne header datei includen kann
also normalerweise sollte das gehen.
Das geht und ist auch üblich so.
Fehlermeldung von meinem Compiler: Must use c++ for stdcomp.h Ich blick das net mehr!
Das heisst, der Compiler meint, er würde jetzt ein C-Programm erzeugen – und beschwert sich über „Klassen“ und dergleichen. Möglicherweise muss beim Borland das Quellfile immer .cpp oder so heissen und nicht .c oder .cxx. Schau mal in die Dokumen- tation.
Ich weiß leider nicht was du mir damit sagen willst. MEine HEaderdatei heißt --> store.hAnsonsten benutze ich bloß .cpp und .h
4.)ist es richtig, dass es sich bei f(char **chary); nicht mehr um einen pointer handelt, sondern den Inhalt eines Arrays aus chars(Das als Argument für f genommen wird)? Das ist sehr simpel. 1) char b; 2) char ab[8]; 3) char* zb; 4) char** zzb; 1 - b ist ein Zeichen, z.B. ‚x‘ 2 - ab ist eine Konstante, die Anfangsadresse eines Feldes von 8 Zeichen 3 - zb ist eine Variable, in der die Adresse von einem Zeichen drinsteht (ein Zeiger auf Zeichen) 4) - zzb ist eine Variable, in der die Adresse von einem Zeiger auf ein Zeichen drinsteht Hinweis: Da an der Anfangsadresse des Feldes 2) auch schon ein Zeichen steht, kann man auch schreiben zb = ab; d.h. die konstante Feldaddresse „ab“ steht jetzt im Zeiger zb.
Danke! Dieser Zusammenhang wird mir schon viel klarer!Könntest du mir vielleicht ein Beispiel für eine Sinnvolle verwendung von: char** zzb; zeigen oder zumindest erklären warum das die Parameterübergabe in main() nicht einfach sovoid main(int args,char[]){…}heißen kann sondern noch einen pointer enthalten muss?
Auf jeden Fall Danke das ihr euch immer noch die Mühe macht mir mit meinen *nervigen Fragen* zu helfen!Gruß rundell32