Arrays und Strukturen initialisieren und Macros

20/06/2009 - 04:07 von Thomas Steinbach | Report spam
Hallo,

ich wuerde in meinem Programm gerne meine Arrays initialisieren und
frage mich obe nicht geschickt waere hierfuer ein Macro heranzuziehen.

Wie mache ich aus einem

#define MYROWS 3

void func()
{
int myarray[MYROWS] = { 0, 0, 0 }
}

so etwas wie:

#define MYROWS 3
#define MYINIT(x,n) ...

void func()
{
int myarray[MYROWS] = { MYINIT(MYROWS,0) }
}

So das eben oben genanntes heauskommt?
Und wie koennte sowas fuer mehrdimensionale Arrays aussehen?

Geht das ueberhaupt und ist der Praeprozessor dafuer das "richtige"
Werkzeug?

btw: Wie kann ich Strukturen bei der Deklaration initialsieren?
Also z.B. Mit null fuer Zeiger, 0 fuer int und "" fuer char arrays?
Geht das bei Strukturen ueberhaupt?

Thomas
 

Lesen sie die antworten

#1 Ralf Damaschke
20/06/2009 - 12:16 | Warnen spam
Thomas Steinbach wrote:

ich wuerde in meinem Programm gerne meine Arrays initialisieren und
frage mich obe nicht geschickt waere hierfuer ein Macro heranzuziehen.

Wie mache ich aus einem

#define MYROWS 3

void func()
{
int myarray[MYROWS] = { 0, 0, 0 }
}

so etwas wie:

#define MYROWS 3
#define MYINIT(x,n) ...

void func()
{
int myarray[MYROWS] = { MYINIT(MYROWS,0) }
}

So das eben oben genanntes heauskommt?
Und wie koennte sowas fuer mehrdimensionale Arrays aussehen?



So allgemein geht das wohl nicht. Nur 0 ist einfach:

int myarray[MYROWS][MYCOLS] = { 0 };

Geht das ueberhaupt und ist der Praeprozessor dafuer das "richtige"
Werkzeug?

btw: Wie kann ich Strukturen bei der Deklaration initialsieren?
Also z.B. Mit null fuer Zeiger, 0 fuer int und "" fuer char arrays?
Geht das bei Strukturen ueberhaupt?



Ja, durchaus (wenn es denn auch eine Definition sein darf), z.B.:

struct { int i; int j; char *p; char t[12]; double d; } = { 1 };

setzt i auf 1 und die weiteren Elemente auf 0, NULL, 12 * '\0'
(ergibt ""), und 0.0.

Die dahinterliegende Regel wird angewandt (bei Elementen mit
Aggregat-Typ auch rekursiv) auf alle Objekte mit unvollstàndiger
Initialisierung und statische Objekte.

Ähnliche fragen