Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Ich schriebe am Di ne Arbeit in Informatik u.a. mit dem Thema Zeigern und war gerade auf dem besten Wege das Thema zu verstehen als mir plötlzich folgende zeilen unterkamen:

#include <stdio.h>

void main()

flaot feld[] = {11.1,2.2,3.3,A.4,5.5}

float *fpointer = &feld[0]

int a,k

printf ("%p : %f\n", fpointer, *fpointer);

for (k = 0; K<5; k++)

printf ("%p : %f\n", fpointer++, *fpointer);

printf ("%P : %f\n", fpointer--, *fpointer);

printf ("%p : %f\n", fpointer, *fpointer)

int a = -31200;

printf ("%P : %d\n", &a,a)

}

Da komme ich nicht mehr mit :( :confused: Könnt ihr mir das bitte erklären !? Danke ! :)

Hast du nähere Informationen dazu? Soll dieser Code etwas demonstrieren? Oder ist das eine Fehlersuchaufgabe? Denn selbst wenn man die Fehler rausmacht, macht der Code nichts sinnvolles.

printf ("%p : %f\n", fpointer++, *fpointer);
Was dabei herauskommt, ist sowieso nicht vorhersagbar, weil der Standard die Reihenfolge der Auswertung von Funktionsargumenten nicht festlegt.
Originally posted by Bukker

Ich schriebe am Di ne Arbeit in Informatik u.a. mit dem Thema Zeigern und war gerade auf dem besten Wege das Thema zu verstehen als mir plötlzich folgende zeilen unterkamen:

#include <stdio.h>

void main()

flaot feld[] = {11.1,2.2,3.3,A.4,5.5}

float *fpointer = &feld[0]

int a,k

printf ("%p : %f\n", fpointer, *fpointer);

for (k = 0; K<5; k++)

printf ("%p : %f\n", fpointer++, *fpointer);

printf ("%P : %f\n", fpointer--, *fpointer);

printf ("%p : %f\n", fpointer, *fpointer)

int a = -31200;

printf ("%P : %d\n", &a,a)

}

Da komme ich nicht mehr mit :( :confused: Könnt ihr mir das bitte erklären !? Danke ! :)

Also wenn man mal die kleineren Tippfehler vernachlaessigt ... sehe ich nicht was da besonders schwer zu verstehen ist.

Was verstehst du denn genau nicht ?

Frank

Also ich verstehe es bis hierhin:

#include <stdio.h>

void main()

flaot feld[] = {11.1,2.2,3.3,A.4,5.5}

Es wird einfach die Header Datei bestimmt, ein array namens feld eingelesen das die folgendes Zahlen beinhaltet...

float *fpointer = &feld[0] //Deklaration des Zeigers fpointer mit Speicheradresse übergabe des Feldes beginnend von Null oder!?

int a,k //Deklaration der Variablen A und K

und dieser ganze Rest

printf ("%p : %f\n", fpointer, *fpointer);

for (k = 0; K<5; k++)

printf ("%p : %f\n", fpointer++, *fpointer);

printf ("%P : %f\n", fpointer--, *fpointer);

printf ("%p : %f\n", fpointer, *fpointer)

int a = -31200;

printf ("%P : %d\n", &a,a)

ergibt für mich keinen Sinn. Der ganze Block sagt mir nix.

@ Klotzkopp: Es ist einfach nur ein Blatt das uns ausgeteilt wurde. Komplett sieht es so aus:

**********BLATT*************

float feld [] = {1.1,2.2,3.3,4.4,5.5}

float *fpointer; int k;

for (k = 0;k<5;k++)

{fpointer = &feld[k]; printf ("%f\n", *fpointer);}

ist mit dem entsprechenden Teil (ergänzt um Anzeigen von Adresse!) in

/*point.c Zeigervariable*/

#include <stdio.h>

void main()

flaot feld[] = {11.1,2.2,3.3,A.4,5.5}

float *fpointer = &feld[0]

int a,k

printf ("%p : %f\n", fpointer, *fpointer);

for (k = 0; K<5; k++)

printf ("%p : %f\n", fpointer++, *fpointer);

printf ("%P : %f\n", fpointer--, *fpointer);

printf ("%p : %f\n", fpointer, *fpointer)

int a = -31200;

printf ("%P : %d\n", &a,a)

}

*******BLATT ENDE*******

Originally posted by Bukker

Also ich verstehe es bis hierhin:

#include <stdio.h>

void main()

flaot feld[] = {11.1,2.2,3.3,A.4,5.5}

Es wird einfach die Header Datei bestimmt, ein array namens feld eingelesen das die folgendes Zahlen beinhaltet...

float *fpointer = &feld[0] //Deklaration des Zeigers fpointer mit Speicheradresse übergabe des Feldes beginnend von Null oder!?

int a,k //Deklaration der Variablen A und K

und dieser ganze Rest

printf ("%p : %f\n", fpointer, *fpointer);

for (k = 0; K<5; k++)

printf ("%p : %f\n", fpointer++, *fpointer);

printf ("%P : %f\n", fpointer--, *fpointer);

printf ("%p : %f\n", fpointer, *fpointer)

int a = -31200;

printf ("%P : %d\n", &a,a)

ergibt für mich keinen Sinn. Der ganze Block sagt mir nix.

@ Klotzkopp: Es ist einfach nur ein Blatt das uns ausgeteilt wurde. Komplett sieht es so aus:

**********BLATT*************

float feld [] = {1.1,2.2,3.3,4.4,5.5}

float *fpointer; int k;

for (k = 0;k<5;k++)

{fpointer = &feld[k]; printf ("%f\n", *fpointer);}

ist mit dem entsprechenden Teil (ergänzt um Anzeigen von Adresse!) in

/*point.c Zeigervariable*/

#include <stdio.h>

void main()

flaot feld[] = {11.1,2.2,3.3,A.4,5.5}

float *fpointer = &feld[0]

int a,k

printf ("%p : %f\n", fpointer, *fpointer);

for (k = 0; K<5; k++)

printf ("%p : %f\n", fpointer++, *fpointer);

printf ("%P : %f\n", fpointer--, *fpointer);

printf ("%p : %f\n", fpointer, *fpointer)

int a = -31200;

printf ("%P : %d\n", &a,a)

}

*******BLATT ENDE*******

Es wurde ja auch nicht nach dem Sinn gefragt sondern was da generell gemacht wird.

fpointer++ ist ein Postinkrement des Float Zeigers auf das naechste Element, analog --fpointer ein Predekrement und dann wird der Wert ausgegeben auf den

der Zeiger aktuell zeigt, d.h. das entsprechende Element des Arrays.

Hast du das mal ausprobiert oder nicht ?

Frank

Was da genau gemacht wird wollte ich ja wissen...

Ja ich habs versucht aber es trat ein Prob mit dem Debugger auf und ich konnte es nciht ausführen :(

Zeile für Zeile... (auffällige Korrekturen vorgenommen)

float feld [] = {1.1,2.2,3.3,4.4,5.5}

-> Erstellen eines float-Arrays

float *fpointer; int k;

-> Deklaration eines float Zeigers und einer int-Variablen

for (k = 0;k<5;k++) // sollte nur k<4 sein, weil Wert 5 bei "printf ("%p : %f\n", fpointer--, *fpointer);" überschritten wird

-> 5 Einträge durchgehen

{fpointer = &feld[k]; printf ("%f\n", *fpointer);}

-> Den Zeiger auf das feld[0] zeigen lassen und den Inhalt des Felds darüber ausgeben

ist mit dem entsprechenden Teil (ergänzt um Anzeigen von Adresse!) in

/*point.c Zeigervariable*/

#include <stdio.h>

void main()

{

float feld[] = {11.1,2.2,3.3,4.4,5.5};

-> Erstellen eines float-Arrays

float *fpointer = &feld[0];

-> den Zeiger auf die Adresse von Feld[0] einstellen

int a,k;

-> zwei Int-Variablen deklarieren; a wird weiter unten verwendet

printf ("%p : %f\n", fpointer, *fpointer);

-> Adresse & Inhalt des Zeigers ausgeben

for (k = 0; K<5; k++)

{

-> 5 Einträge durchgehen

printf ("%p : %f\n", fpointer++, *fpointer);

-> vorheriger Zeiger in hex & Inhalt ausgeben

printf ("%p : %f\n", fpointer--, *fpointer);

-> nachfolgender Zeiger in hex & Inhalt ausgeben

printf ("%p : %f\n", fpointer, *fpointer);

-> nochmal vorheriger Zeiger in hex & Inhalt ausgeben

und das auch noch 5 mal (hintereinander) wodurch beim 5. Durchlauf ein undefinierter Wert bei der 2. Ausgabe erfolgt, da das 6. Feld gar nicht definiert wurde, also purer Speicher hart dargestellt wird (wurde oben angesprochen)

}

a = -31200;

-> Variable wurde oben schon deklariert, existiert also schon!

-> eine Zahl in a reinschreiben

printf ("%P : %d\n", &a,a)

-> dessen Adresse und Wert ausgeben

}

Originally posted by Bukker

Was da genau gemacht wird wollte ich ja wissen...

Ja ich habs versucht aber es trat ein Prob mit dem Debugger auf und ich konnte es nciht ausführen :(

Kannste mal GENAU hier schreiben was denn nun in der Schleife ausgefuehrt werden soll ? Also was GENAU auf deinem Blatt da steht.

Gruss,

Frank

@SgtBadAzz: Nee das war ja das Blatt was ich oben schon stehn hab, mehr steht da nicht.

@ Crush: Danke das wollte ich wissen :-D Was da in jeder Zeile passiert THX ! :-D

Thread kann geschlossen werden ;)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.