Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
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}} |