Forum: Compiler & IDEs Zweidimensionales Array


von Mathias K. (matzeknu)


Lesenswert?

Hey ich hab es leider in keiner Beschreibung gefunden.
Ich möchte ein zweidimensionales Array mit Daten beschreiben. (immer die 
gleichen) aber nicht bei der deklaration.

also in meiner .h datei steht dann

char temp_array[35][1];

und jetz möchte ich meine daten reinschreiben mit.

temp_array = {
{-40,497},
{-35,647},
{-30,829},
{-25,1049},
{-20,1308},
{-15,1607},
{-10,1948},
{-5,2331},
{0,2749},
{5,3195},
{10,3663},
{15,4146},
{20,4633},
{25,5115},
{30,5586},
{35,6036},
{40,6461},
{45,6858},
{50,7224},
{55,7558},
{60,7861},
{65,8128},
{70,8366},
{75,8579},
{80,8767},
{85,8933},
{90,9079},
{95,9208},
{100,9322},
{105,9422},
{110,9509},
{115,9586},
{120,9655},
{125,9714},
{255,0},
};

irgendwie tut das nur wenn ich:

char temp_array = {
{-40,497},
{-35,647},......

schreib, aber damit ist das array nur in meiner Funktion verfügbar und 
nicht im ganzen Programm.. hilfe :)

von Oliver S. (oliverso)


Lesenswert?

Mathias K. schrieb:
> irgendwie tut das nur wenn ich:

Glaube ich nicht...

Aber ansonsten ist das in C halt so.

Schreib mal in deine .h Datei:
1
extern char temp_array[35][2];

und in deine .c-Datei außerhalb jeder Funktion
1
char temp_array[35][2] = {
2
{-40,497},
3
{-35,647},......

Etwas später wirst du dann herausfinden, daß das zwar kompiliert, aber 
nicht macht, was du willst.

Der Wertebereich eines char ist halt begrenzt.

All das und noch viel mehr sollte aber in deinem C-Buch stehen.

Oliver

von A. H. (ah8)


Lesenswert?

Eigentlich müsste Dein Compiler mindestens zwei Fehlermeldungen 
ausgespuckt haben, die eine betrifft die Dimension des Feldes, die 
andere den verfügbaren Wertebereich der Elemente. Das sollten wir erst 
einmal klären bevor wir über Sichtbarkeit reden.

von Dirk B. (dirkb2)


Lesenswert?

Welchen Wertebereich hat dein ein char auf deinem System?
Passen da Werte wie 255 oder gar 497 rein?

Auf einmal kann man ein Array nur bei der Definition initialisieren.

Und du must dir nochmal die Bedeutung der Werte (für die Dimension) bei 
der Definition und beim Zugriff ansehen.

von Mathias K. (matzeknu)


Lesenswert?

ja das

char temp_array[35][2] = {
{-40,497},
{-35,647},......

geht nur in der .c datei in einer Funktion, aber ich möchte auf das 
Array global zugreifen

von char (Gast)


Lesenswert?

Die erste Frage ist doch, wie du Werte von beispielsweise "-40,497" in 
einem Char unterbringen willst. Darauf bist du noch gar nicht 
eingegangen.
Anschließend nach der Wahl des richtigen Datentyps kann man dann mit 
solchen Sachen wie Sichtbarkeiten weitermachen.

von Dirk B. (dirkb2)


Lesenswert?

Deswegen definierst du es global (außerhalb jeder Funktion) in einer 
.c-Datei und deklarierst es in allen anderen als extern.
Und damit du das nicht jedesmal schreiben musst, machst du das in einer 
.h-Datei, die du dann in den .c-Dateien einbindest

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.