Arrays und Zeiger

OP #2641489
Lesenswert?
• ▲
▼
Guten Tag!

Ich übe c mit dev-C++4.9.9.2

folgendes Beispiel zu Arrays mit Zeiger habe ich nicht begriffen:
1
#include <stdio.h>
2
#include <stdlib.h>
3

4
int main(int argc, char *argv[])
5
{
6
int punkte[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
7

8
// Positionszeiger, Setzen auf 6.Element
9
int *pos = punkte + 5;
10

11
// Index berechnen
12
int index = pos - punkte;
13

14

15
printf("Index: %d\n", index);
16
printf("Wert pos / punkte[index]: %d\n", punkte[index]);
17

18

19
  
20
  system("PAUSE");  
21
  return 0;
22
}



Wieso gibt diese Indexberechnung 5?? pos ist zeigt auf das 6. Element 6. 
Da müsste ja der Wert von punkte 1 betragen? Das seh ich etwas noch 
nicht!
1
// Index berechnen
2
int index = pos - punkte;
3
[


Vielen Dank und freundliche Grüsse!

M.B.
#2641494
Lesenswert?
• ▲
▼
M. B. schrieb:

> Wieso gibt diese Indexberechnung 5?? pos ist zeigt auf das 6. Element 6.

Der Abstand von deinem 5. Finger zu deinem ersten Finger ist 4, nicht 5.

Wenn das 6. Element den Index 5 hat, weil das erste Element den Index 0 
hat, dann ist der Abstand vom 6. Element zum 1. Element identisch mit 
den Index des 6. Elements, also 5. Das gehört zum Charme von 
Array-Indizes, die mit 0 statt 1 anfangen.
Gast #2642251
Lesenswert?
• ▲
▼
M. B. schrieb:

> // Positionszeiger, Setzen auf 6.Element
> int *pos = punkte + 5;
>
> // Index berechnen
> int index = pos - punkte;
>
>
> printf("Index: %d\n", index);
> printf("Wert pos / punkte[index]: %d\n", punkte[index]);

> Wieso gibt diese Indexberechnung 5?? pos ist zeigt auf das 6. Element 6.

Die Kurzform der zwei Pointer-Berechnungen wäre:
1
int index = punkte + 5 - punkte;

Da würdest du wirklich 6 erwarten?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren