Frage zu einer C Code Aufgabe?

Das folgende Programm ist lediglich zu Vorführungszwecken gedacht und soll Sie mit Zeigerarithmetik vertraut machen. Gehen Sie daher den Code aufmerksam durch und versuchen Sie die Vorgänge nachzuvollziehen.

Hinweise:

  • Wo werden Adressen oder Werte von Zeigern/Variablen ausgegeben/beeinflusst?
  • Beachten Sie den Platzhalter „%p“, um Adressen von Pointern auszugeben und die notwendige Typenumwandlung der Variablen zu (void*) zu realisieren.
  • Achten Sie auf die Adress-Abstände benachbarter Array Elemente. Was fällt Ihnen auf und wieso verhält es sich so?
  • Es ist ein Befehl im Code enthalten, der nicht wirklich sinnvoll ist, da er keine Aktion ausführt. Welcher ist es? =  

#include <stdio.h>  int main(){//Variablendeklarationint

iAFeld[6] = {3, 7, 7, 9, 6, 9}; int * piZeiger = NULL; int

i = 0;

piZeiger = iAFeld;piZeiger++;.printf ( "Adresse des ersten Arrayelements: %p\n" , ( void )iAFeld); printf ( "Adresse des dritten Arrayelements: %p\n" , ( void )&iAFeld[2]); printf ( "Wert des Zeigers: %p\n\n" , ( void *)piZeiger); .//Ausgabe des Ausgangsarraysfor

(i = 0; i < 6; i++) printf ( "%i " ,iAFeld[i]); printf ( "\n" ); .//1. Schritt*(++piZeiger) = iAFeld[4];.//Ausgabe des Arraysfor

(i = 0; i < 6; i++) printf ( "%i " ,iAFeld[i]);  printf ( "\n" );    //2. Schritt piZeiger+2; ++(*piZeiger);   //Ausgabe des Arrays for

(i = 0; i < 6; i++)  printf ( "%i " ,iAFeld[i]);  printf ( "\n" );    //3. Schritt piZeiger += 2; *(piZeiger+1) = *piZeiger&12;   //Ausgabe des Arrays for

(i = 0; i < 6; i++)   printf ( "%i " ,iAFeld[i]);   printf ( "\n" );     printf ( "\nZeiger zeigt auf die Stelle, dessen Inhalt ist: %i\n" , *(piZeiger++));  printf ( "Zeiger zeigt auf die Stelle, dessen Inhalt ist: %i" , *piZeiger);

   return

0;

 } 

Meine erste Frage: was bedeutet piZeiger&12, meine zweite: warum ist der Befehl Zeiger +2 sinnlos? Es müsste wahrscheinlich heißen Zeiger = Zeiger +2 oder?

Und meine dritte Frage: was hat es mit dem Abstand der Adressen auf sich?

die eine Adresse endet mit d8 die andere mit d0 ansonsten sind sie identisch. ist also der Abstand immer ein Byte?


programmieren, Informatik
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.