PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeiger



01-11-2000, 09:10
Nochmals Gude Mosche zusammen,

sowohl bein meinem Fernunikurs zur imperativen Programmierung (Pascal) als auch bei meinem Versuch mir C beizubringen bin ich inzwischen bei den Zeigern angelangt. Leider kapiere ich das noch nicht so ganz.

Soweit ich das verstanden habe handelt es sich bei einem Zeiger ja allgemein ausgedrückt um einen Verweis auf einen anderen "Wert". Dies ist wohl sowohl mit der Methode "call by reference", die auf eine Speicheradresse verweist, als auch mit der Methode "call by value", welche "direkt" auf den Wert verweist möglich. Was ich nun nicht kapiere ist was da der große Vorteil von dem sein soll das ich nicht einfach z. B.

Variable1 = Variable2

definiere, schließlich ist das doch auch eine Wertzuweisung. Kann mich da jemand mal umfassend aufklaeren, zumal im Pascalscript irgendwie erwaehnt wird, das man damit immer zur naechsten Variable springen kann???

Gruß und Danke

Stefan

TheJudger
01-11-2000, 14:13
moin moin ...

kennst schon Arrays *fg* ???

wie willst du nen Array von 1000 Vars übergeben ???

funktion(i[0],i[1],i[2],i[3],i[4],....,i[999]) ???, oder gar Arrays varibler Länge ??

wenn du denn Zeiger auf das Array (zeigt im Allgemeinen auf Element 0) übergibts, kannst du dich dan den Zeiger entlanghangeln ....

oder wenn du ne fkt schreibst, die mehrere Rückgabeparameter haben soll, gibt du eine direkt per return zurück (am besten Fehlerrückgabe) und die anderen vars übergibst du als zeiger, so daß die fkt die positionen im Speicher kennt, und drauf schreiben kannst ...

das sollte der grobe unterschied seien ...

01-11-2000, 14:41
Auch hier schon mal Danke,

und so halbwegs habe ichs schon kapiert, aber könntest Du mal ein Beispiel mit dem entlanghangeln durch ein Array posten?

Nur nochmal zu Sicherheit, unter einem Array verstehe ich ein Datenfeld mit beliebigen Elementen. Das kann man im einfachsten Fall (eindimensionales Array) mit einer Menge indizierter Variablen gleichsetzen. Also z. B. die Menge aller An mit (A1, A2, ..., An). Diese Variablen können nun alle beliebige Werte annehmen mit unterschiedlicher Länge, haben aber alle den gleichen Datentyp, also z. B. integer.

Stefan

TheJudger
02-11-2000, 11:17
moin moin

#include < stdio.h>
#include < stdlib.h>

void f(int *x,int l)
{
while(l>=0)x[l--]++;
}

void main()
{
int *array,len;
int i;

len=12;

array=malloc(len*sizeof(int));

for(i=0;i < len;i++)array[i]=i;

printf("Vorher:\n");
for(i=0;i < len;i++)printf("%4d:%4d\n",i,array[i]);

f(array,len);

printf("Nachher:\n");
for(i=0;i < len;i++)printf("%4d:%4d\n",i,array[i]);

free(array);

}


die funktion f incrementiert alle vars im array um 1 ...

... sch***** html ... verbiegt meine <´s und >´s



[Dieser Beitrag wurde von TheJudger am 02. November 2000 editiert.]

05-11-2000, 21:18
Danke!!!

muß ich mir aber nochmal genauer ansehen!

Stefan