Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Mit Zeiger in Array schreiben (C) » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 4 Beiträge
eulerscheZahl

Intern kannst du dir auch ein zweidimensionales Array als ein eindimensionales vorstellen. Die Variablen liegen im Speicher direkt hintereinander, weshalb du in die nächste "Zeile" gelangst, indem du den Wert der x-Dimension aufaddierst.

Nachfolgend ein Beispiel für ein zweidimensionales Array. Das (int*) brauchst du nicht zwingend, erspart dir aber Warnungen des Compilers.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
#include <stdio.h>

#define ARR_LEN 5

void printArray(int *numList)
{
	int x, y;
	for(y = 0; y < ARR_LEN; y++)
	{
		for(x = 0; x < ARR_LEN; x++)
			printf("%3d  ", *(numList + x + y * ARR_LEN));
		printf("\n");
	}
}

void schreibeArray(int *numList, int faktor)
{
	int x, y;
	for(x = 0; x < ARR_LEN; x++)
		for(y = 0; y < ARR_LEN; y++)
			*(numList + x + y * ARR_LEN) = x + faktor * y;
}

int main()
{
	int daten[ARR_LEN][ARR_LEN];
	schreibeArray((int*)daten, 1);
	printArray((int*)daten);
	printf("\n");
	schreibeArray((int*)daten, 10);
	printArray((int*)daten);
	return 0;
}
nano99

Hi,

vielen Dank, das war genau das, was ich gesucht habe. smile

Aber wie würde das denn für zwei- oder dreidimensionale Arrays aussehen?

LG,
nano99
eulerscheZahl

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
#include <stdio.h>

#define ARR_LEN 7

void schreibeArray(int *numList)
{
	*(numList + 0) = 12;
	*(numList + 1) = 28;
	*(numList + 2) = 10;
	*(numList + 3) = 9;
	*(numList + 4) = -2;
	*(numList + 5) = -13;
	*(numList + 6) = 37;
}

int main()
{
	int daten[ARR_LEN];
	int i;
	daten[0] = 7;
	daten[1] = 15;
	daten[2] = 73;
	daten[3] = -9;
	daten[4] = 23;
	daten[5] = -85;
	daten[6] = 54;
	for(i = 0; i < ARR_LEN; i++) 
		printf("%d, ", daten[i]);
	printf("\n");
	//schreibeArray(&daten[0]);
	schreibeArray(daten);
	for(i = 0; i < ARR_LEN; i++) 
		printf("%d, ", daten[i]); 
	return 0;
}
nano99 Mit Zeiger in Array schreiben (C)

Meine Frage:
Hi,

ich möchte gerne ein C-Programm schreiben, dass mithilfe eines Zeigers in einer Funktion Werte in ein Array schreibt.
Mein bisheriges Programm funktioniert allerdings noch nicht: beim Kompilieren entstehen schon diverse Warnungen und bei der Ausführung wird nur extrem langer Kauderwelsch ausgegeben.

Meine Ideen:
Mein bisheriges Programm:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
#include <stdio.h>

#define ARR_LEN 7

void schreibeArray(int *numList)
{
 *numList[0]=12;
 *numList[1]=28;
 *numList[2]=10;
 *numList[3]=9;
 *numList[4]=-2;
 *numList[5]=-13;
 *numList[6]=37;
}

int main()
{
 int daten[ARR_LEN];
 int i;
 daten[0]=7;
 daten[1]=15;
 daten[2]=73;
 daten[3]=-9;
 daten[4]=23;
 daten[5]=-85;
 daten[6]=54;
 for(i=0; i<ARR_LEN; i++) { printf("%d, ",daten[i]); }
 printf("\n");
 schreibeArray(&daten);
 for(i=0; i<ARR_LEN; i++) { printf("%d, ",daten[i]); }
 return 0;
}


Kann mir jemand sagen, wie das Programm richtig lauten müsste?
Bei korrekter Ausführung sollte also folgende Ausgabe entstehen:

code:
1:
2:
3:
4:
7, 15, 73, -9, 23, -85, 54, 
12, 28, 10, 9, -2, -13, 37, 


Über hilfreiche Antworten wäre ich sehr dankbar. smile

LG,
nano99