AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[C] Pointeroperationen in C

Ein Thema von Hador · begonnen am 15. Nov 2008 · letzter Beitrag vom 26. Nov 2008
Antwort Antwort
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#1

Re: [C] Pointeroperationen in C

  Alt 15. Nov 2008, 14:50
Zitat von Apollonius:
Ich vermute, dass der C-Compiler ein int[1] als statisches Array implementiert, d.h. auf dem Stack ablegt. Um zu dynamischen Arrays, also int[], kompatibel zu bleiben, erlaubt er p = feld weiterhin und interpretiert es als Abkürzung für p = &feld[0]. feld = p funktioniert aber nicht, weil feld als statisches Array eine feste Adresse hat. Dies ist jedoch nur Spekulation! Ich habe es nicht getestet.
Dynamische Arrays gibt es im C90 nur insoweit, dass man etwas sowas schreiben kann: int[] = {1, 2, 3}. Wirklich dynamisch ist das nicht. Aber ich werde da mal ein wenig weiterprobieren.
Zitat von Apollonius:
Das es einen "int operator-(void*, void*)" gibt, ist absolut sinnvoll. Er dient dazu, den Abstand zwischen zwei Adressen herauszufinden. Das ist beispielsweise nützlich, um einen Jump-Offset zu berechnen.
Jo, ergibt Sinn, daran hatte ich nicht gedacht.

Zitat von bigg:
Werte in C nicht zu initialisieren kann tödlich sein. Außerdem sollte man beachten, wie man seine Variablen alloziiert. Heap und Stack sagen dir etwas? Zudem kann man Variablen auch in der Versenkung verschwinden lassen, wenn man einfach deren Adressen überschreibt. Lass dir zur Sicherheit deren Werte und Adressen anzeigen. Mit sprintf() müsste es in C funktionieren, aber ich denke du verwendest eh einen C++ Compiler von daher ist ein einfaches
Code:
cout << &i;
(nicht C konform), aber zum debuggen alle mal besser.
Es geht nicht um ein reales Programm, sondern eine Übung und damit um die Frage, welche Zuweisungen warum funktionieren. Ansonsten werden natürlich Variablen initialisiert
Mit sprintf() kann man in Strings herumschreiben. Was du vermtulich meinst ist einfach printf().
Übrigends wird strikt bach ISO C90 gecoded. Da ist nix mit C++.
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz