Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

[C] Fragen zu Pointern

  Alt 23. Jun 2007, 14:01
Hallo zusammen,

ich bin gerade an einer alten Informatik-Prüfung. Es geht um C und Pointer. Man soll kennzeichnen, welche Anweisungen richtig und welche falsch sind und ggf. markieren, was falsch ist.
Die meisten Anweisungen habe ich richtig eingestuft, doch bei diesen 3 verstehe ich nicht, wieso diese richtig bzw. falsch sind:

Code:
void main()
{
    char Buchstab, *pointerBuch = &Buchstab;

    pointerBuch = "Adam Riese";         // (1) -> richtig
    pointerBuch = "a";                  // (2) -> richtig

    *Buchstab = "xyz";                   // (3) -> falsch, als falsch markiert: *
}
Was ich nicht verstehe ist nun folgendes:

zu (1) und (2): Auf den Inhalt (also den Wert) des Pointers greife ich normalerweise mit dem Dereferenzierungsoperator (ich glaube der nennt sich so) * zu. Lasse ich diesen Weg, würde ich sagen, dass ich die Speicheradresse zuweise. Wieso wird als Adresse "Adam Riese" bzw. "a" überhaupt akzeptiert bzw. die Adresse des ersten String-Zeichens zugewiesen?

Wenn wir gerade dabei sind: Ist es generell so, dass die Adressen von einem Zeichen zum nächsten fortlaufend sind? Denn wenn ich die Adresse des Pointers hochzähle, komme ich immer genau zum nächsten Buchstaben. Ich habe immer gedacht, dass eine willkürliche Adresse genommen wird, die eben grad frei ist.

zu (3): Ich halte diese Anweisung für völligen Blödsinn, da Buchstab erstens kein Pointer ist und zweitens einem Char nur ein Zeichen zugewiesen werden kann. Wieso wird nur der * als Fehler markiert?

Als ich das im VS getestet habe, kam auch die Meldung, wie ich sie erhofft hatte:

Zitat:
error C2440: '=' : cannot convert from 'const char [4]' to 'char'
Das sind einige Fragen, die teils vermutlich zu den Programmiergrundlagen gehören, doch ich kann sie mir dennoch nicht beantworten.
Ich hoffe, ihr könnt mir weiterhelfen.

Grüße
  Mit Zitat antworten Zitat