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.
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.
LG,
nano99 |
|
|