Array an Funktion übergeben (Referenzieren)

Grundsätzlich darf man in C so ziemlich alles. Hast du denn nun die Daten im Array veränderlich gemacht?
\edit: Darfst du denn die Deklaration von ger_xpm ändern?
Gruß
Also die Deklaration von ger_xpm darf ich nicht ändern. Das ganze liegt in einem File und wird am Anfang über include eingebunden...
Code:
#include "C:\Users\...\Documents\Visual Studio 2008\Projects\...\Programm_5_1\germany.xpm"
Ich frag mich halt, wenn ger_xpm static ist und nicht veränderbar, ob ich das innerhalb der Funktion als xpm verändern kann? Weil das was ich später als Parameter reinstopfe static ist.

Hier nochmal der aktuelle Stand zusammen mit der main() :

Code:
void set_points(struct town ort[],char * xpm[])
    {
    int breite=0, hoehe=0,i,k,u;
        for (i=0; i<20; i++)
        {
        if (strcmp(ort[i].name,"")!=0)
            {
            breite=suche_b_punkt(stadt,i);
            hoehe=suche_h_punkt(stadt,i);
                for (k=-2; k<=2; k++)
                {
                    for (u=-2; u<=2; u++)
                    {
                    xpm[hoehe+10+k][breite+u]='r';
                    }
                }
            }
        }
    }
// Hauptprogramm
void main (void)
{
set_struct(stadt);
set_points(stadt,ger_xpm);
}
Grüße Hawkzfan
 
Also die Deklaration von ger_xpm darf ich nicht ändern. Das ganze liegt in einem File und wird am Anfang über include eingebunden...
Code:
#include "C:\Users\...\Documents\Visual Studio 2008\Projects\...\Programm_5_1\germany.xpm"
Ich frag mich halt, wenn ger_xpm static ist und nicht veränderbar
Die Variable ger_xmp ist änderbar. Die Stringliterale mit denen das Array initialisiert ist, sind es nicht.
ob ich das innerhalb der Funktion als xpm verändern kann? Weil das was ich später als Parameter reinstopfe static ist.
Du solltest evtl. mal nachschlagen was static überhaupt bedeutet (insbesondere bei globalen Variablen).
// Hauptprogramm
Code:
void main (void)
{
set_struct(stadt);
set_points(stadt,ger_xpm);
}
Erstens muß die Funktion main laut C/C++ Standard den Typ int zurückgeben.

Dann kannst du die Werte des Arrays modifizierbar machen, indem die Literale kopiert werden:
C:
for (int i = 0; i < sizeof(ger_xpm)/sizeof(*ger_xpm); ++i) {
  char* copy = calloc(strlen(ger_xpm[i] + 1, sizeof(**ger_xpm));
  ger_xpm[i] = strcpy(copy, ger_xpm[i]);
}
Gruß
 
Zurück