Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

tux:arrays_vs_pointer [2011/12/12 15:03]
wikisysop [C → Arrays vs. Zeiger]
tux:arrays_vs_pointer [2011/12/15 19:51] (aktuell)
wikisysop
Zeile 9: Zeile 9:
  ​int ​ iarray[3] ​ = {1,2,3};  ​int ​ iarray[3] ​ = {1,2,3};
  char *c         = "​abc";​  char *c         = "​abc";​
- ​int ​  ​i ​        = iarray[1]; 
  ​return 0;  ​return 0;
 }</​code>​ }</​code>​
Zeile 24: Zeile 23:
 0x080483b4 <​main+32>:​ mov ​   DWORD PTR [ebp-0x10],​0x3 0x080483b4 <​main+32>:​ mov ​   DWORD PTR [ebp-0x10],​0x3
 0x080483bb <fc #​800000><​main+39></​fc>:​ mov ​   DWORD PTR [ebp-0x8],<​fc #​800000>​0x8048490</​fc>​ 0x080483bb <fc #​800000><​main+39></​fc>:​ mov ​   DWORD PTR [ebp-0x8],<​fc #​800000>​0x8048490</​fc>​
-0x080483c2 <​main+46>:​ mov ​   eax,DWORD PTR [ebp-0x14] 
-0x080483c5 <​main+49>:​ mov ​   DWORD PTR [ebp-0x4],​eax 
 ...</​xterm>​ ...</​xterm>​
  
-Interessant sind hierbei die Zeilen <fc #​0000FF><​main+6></​fc>,​ <fc #​0000FF><​main+10></​fc>,​ <fc #​0000FF><​main+14></​fc>​ und die Zeile <fc #​800000><​main+39></​fc>​. In den ersten drei Zeilen wird das >><​fc #​0000FF>​carray</​fc><<​ initialisiert. Man erkennt, dass das Array in lauter Zeiger zerfällt, welche auf jeweils ein Element des Arrays zeigen. Dagegen wird in der Zeile, wo der char-Zeiger >><​fc #800000>*c</​fc><<​ initialisiert wird, nur die Adresse <fc #​800000>​0x8048490</​fc>​ übergeben, in der der Inhalt steht:+Interessant sind hierbei die Zeilen <fc #​0000FF><​main+6></​fc>,​ <fc #​0000FF><​main+10></​fc>,​ <fc #​0000FF><​main+14></​fc>​ und die Zeile <fc #​800000><​main+39></​fc>​. In den ersten drei Zeilen wird das >><​fc #​0000FF>​carray</​fc><<​ initialisiert. Man erkennt, dass das Array in lauter Zeiger zerfällt, welche auf jeweils ein Element des Arrays zeigen. Dagegen wird in der Zeile, wo der char-Zeiger >><​fc #​800000>​c</​fc><<​ initialisiert wird, nur die Adresse <fc #​800000>​0x8048490</​fc>​ übergeben, in der der Inhalt steht:
  
 <​xterm>​(gdb) <fc #​008000>​x/​s 0x8048490</​fc>​ <​xterm>​(gdb) <fc #​008000>​x/​s 0x8048490</​fc>​
-0x8048490: "​abc"</​xterm> ​  ​+0x8048490: "​abc"</​xterm>​
  
-~~DISCUSSION:off~~+ --- //pronto 2011/12/11 15:04// 
 +{{keywords>​array pointer zeiger c}}
tux/arrays_vs_pointer.1323698615.txt.gz (6958 views) · Zuletzt geändert: 2011/12/12 15:03 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0