Mit Zeiger in Array schreiben (C)

Neue Frage »

Auf diesen Beitrag antworten »
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
 
Auf diesen Beitrag antworten »
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;
}
Auf diesen Beitrag antworten »
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
Auf diesen Beitrag antworten »
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;
}
 
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »