www.mikrocontroller.net

Forum: PC-Programmierung 2dimensionales Array


Autor: C64 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Wenn ich ein Array eröffne mit

unsigned char Array[5][5];

ist das dann 5x5 oder 6x6 groß, d.h. wird 0 mitgerechnet?

: Verschoben durch Admin
Autor: Dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi C64,

das Array ist dann 5x5.

Grüße
Dave

Autor: remmy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
5x5

Index von 0-4

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C64 schrieb:
> Hi
>
> Wenn ich ein Array eröffne mit ...
                     ^^^^^^^

Definieren heisst das, nicht eröffnen.

Autor: Willi S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei C++ : array[5] --> 0-4 also insgesamt 5 Elemente haben Platz
Bei VB : array(5) --> 0-5 hier haben insgesamt 6 Elemente Platz

Das ist ein wesentlicher Unterschied :-)

Gruß,
Willi

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
char str[]="Hallo";

wird 5+1 lang, da ein string am Ende mit 0 bzw. dem Zeichen '\0' 
gekennzeichnet wird.

Da ist die Array-Size dann 6. Rückwärts muss man dies beachten, wenn man 
Strings in Arrays schreiben will.


VG,
/th.

Autor: Willi S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die werden auch String-Arrays genannt, obwohl es in C und C++ keinen 
eigenen Datentyp "string" gibt. Das mit der \0 zum Schluss hat einen 
guten Grund. Es gibt einen ganzen Haufen String-Funktionen in C und C++ 
(string.h), die sich nach der 0 am Schluss orientieren. Beispiel: 
"strlen".
Das nur so zur Ergänzung.

lg,
willi

Autor: MeinerEiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In VB gibts aber auch die Möglichkeit, array(x TO y) zu schreiben, dann 
sieht man, welche Indizes möglich sind; Also array(5) = array(0 TO 5)

Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Willi S. schrieb:
> Die werden auch String-Arrays genannt, obwohl es in C und C++ keinen
> eigenen Datentyp "string" gibt. Das mit der \0 zum Schluss hat einen
> guten Grund. Es gibt einen ganzen Haufen String-Funktionen in C und C++
> (string.h), die sich nach der 0 am Schluss orientieren. Beispiel:
> "strlen".
> Das nur so zur Ergänzung.
>
> lg,
> willi

Mh zumindest in C++ gibts strings ;)

Autor: Christoph Pelich (cpehonk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christopher D. schrieb:

> Mh zumindest in C++ gibts strings ;)

Leider aber nicht als Daten-Typ. Der ist erst bei C# eingeführt. C++ 
(speziell MFC) liefert "nur" CString als Klasse.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph Pelich schrieb:
> Christopher D. schrieb:
>
>> Mh zumindest in C++ gibts strings ;)
>
> Leider aber nicht als Daten-Typ.

Doch.
std::string

Die STL ist offizieller Bestandteil von C++ und sollte als solcher auch 
verwendet werden.

Wenn du std::string schon nicht kennst, werden dir die Augen übergehen, 
was du sonst noch so alles in der STL verfügbar hast :-)

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:

> Die STL ist offizieller Bestandteil von C++ und sollte als solcher auch
> verwendet werden.

Nichts sollte verwendet werden, nur weil es da ist. Warte mal ab, was 
fuer ein Zeug sie noch in C++ stopfen...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Stegemann schrieb:
> Karl heinz Buchegger schrieb:
>
>> Die STL ist offizieller Bestandteil von C++ und sollte als solcher auch
>> verwendet werden.
>
> Nichts sollte verwendet werden, nur weil es da ist.

In Zusammenhang mit der Aussage 'In C++ gibt es keine String Klasse' 
kann man trotzdem aber nur auf die in der STL vorhandene std::string 
verweisen.

Sie ist Bestandteil von C++, ob es einem nun passt oder nicht und somit 
ist die Behauptung einfach nur falsch und zeugt nicht gerade vom Wissen 
darüber, was in C++ alles vorhanden ist und was nicht.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:

> In Zusammenhang mit der Aussage 'In C++ gibt es keine String Klasse'
> kann man trotzdem aber nur auf die in der STL vorhandene std::string
> verweisen.

Dem Teil habe ich ja auch nicht widersprochen, sondern dem danach.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Stegemann schrieb:
> Karl heinz Buchegger schrieb:
>
>> In Zusammenhang mit der Aussage 'In C++ gibt es keine String Klasse'
>> kann man trotzdem aber nur auf die in der STL vorhandene std::string
>> verweisen.
>
> Dem Teil habe ich ja auch nicht widersprochen, sondern dem danach.

Dann habe ich dich missverstanden

Hintergrund: man hört immer wieder die Aussage, dass std::string und 
Konsorten nicht zu C++ gehören, weil die ja in einer STL (igitt) 
residieren und damit nicht zur Sprache gehören. Und das ist ganz einfach 
Unsinn. Mit der gleichen Argumentation könnte man auch sagen, dass 
strcpy nicht zu C gehört, weil es ja schliesslich nicht in der Syntax 
verankert ist.

Oft kann man std::string nicht benutzen. Sei es, weil man ein altes 
Programm pflegen muss oder sich an ein bestimmtes Framework anpassen 
muss oder Schwierigkeiten mit Multithreading hat. Meistens sind es 
einfach nur historische Gründe, warum man mit std::string nicht 
weiterkommt. Wenn man aber diese Zwänge nicht hat, spricht nichts gegen 
std::string. Immer noch besser, als wenn sich Lieschen Müller selbst die 
x-te Stringklasse baut.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:

> Hintergrund: man hört immer wieder die Aussage, dass std::string und
> Konsorten nicht zu C++ gehören, weil die ja in einer STL (igitt)
> residieren und damit nicht zur Sprache gehören. Und das ist ganz einfach
> Unsinn. Mit der gleichen Argumentation könnte man auch sagen, dass
> strcpy nicht zu C gehört, weil es ja schliesslich nicht in der Syntax
> verankert ist.

Stimmt. Den beiden ist gemeinsam, dass man sie sehr gut von der 
eigentlichen Sprache trennen kann. Und das ist das Schoene an C und C++ 
und das macht sie so geeignet fuer viele Platformen. Der Overhead, den 
man mitschleppen muss, ist extrem klein.

> Wenn man aber diese Zwänge nicht hat, spricht nichts gegen
> std::string. Immer noch besser, als wenn sich Lieschen Müller selbst die
> x-te Stringklasse baut.

Doch sicher gibt es genuegend Gruende fuer so eine Entscheidung. Aber es 
ist wohl muessig, das hier zu diskutieren. Das hatten wir schon und das 
fuehrt leider zu gar nichts.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Meistens sind es einfach nur historische Gründe, warum man mit
> std::string nicht weiterkommt.

std::string hat irgendein compilerspezifisches Encoding und ist in der 
Regel nicht unicode-geeignet. std::wstring ist das teilweise, solange 
man die Strings nicht von irgendwo lesen oder irgendwo hinschreiben 
will. Dann hat man nämlich auch das Problem, daß man zwischen 
irgendeinem compilerspezifischen Encoding und dem externen Encoding 
konvertieren muß. Das ist mit standard-C++ dann recht umständlich und 
wird längst nicht von allen Compilern vernünftig unterstüzt. Die Namen 
der Encodings sind dann dazu auch noch compilerspzifisch,  und eine 
Liste der verfügbaren Encodings kann man in standard-C++ auch nicht 
ermitteln.
Mit einer Kombination aus std::wstring und iconv kann man aber 
einigermaßen arbeiten. Allerdings ist std::wstring nicht gerade 
sonderlich komfortabel. Deshalb gibt es wohl so viele APIs, die ihre 
eigene String-Klasse mitliefern.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.