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

Informatiker Board » Themengebiete » Theoretische Informatik » Mit Zeiger in Array schreiben (C) » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Mit Zeiger in Array schreiben (C)
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
nano99
Grünschnabel


Dabei seit: 29.11.2013
Beiträge: 3

Mit Zeiger in Array schreiben (C) Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
29.11.2013 21:33 nano99 ist offline Beiträge von nano99 suchen Nehmen Sie nano99 in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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;
}


__________________
Syntax Highlighting fürs Board (Link)
29.11.2013 21:57 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
nano99
Grünschnabel


Dabei seit: 29.11.2013
Beiträge: 3

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
01.12.2013 18:11 nano99 ist offline Beiträge von nano99 suchen Nehmen Sie nano99 in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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;
}


__________________
Syntax Highlighting fürs Board (Link)
01.12.2013 18:49 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Mit Zeiger in Array schreiben (C)