Hirdetés
- Milyen okostelefont vegyek?
- Google Pixel topik
- Megtartotta Európában a 7500 mAh-t az Oppo
- Google Pixel 9 Pro XL - hét szűk esztendő
- Apple iPhone 17 Pro Max – fennsík
- Okosóra és okoskiegészítő topik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Poco F7 – bajnokesélyes
- A piac legerősebb kameráját ígéri a Xiaomi 17 Ultra
- CES 2026: A Dreame első akciókamerája apró, szétszedhető, 8K-t is rögzít
-
Mobilarena

Új hozzászólás Aktív témák
-
pmonitor
aktív tag
válasz
pmonitor
#19935
üzenetére
Röviden:
A struct gyakorlatilag azt jelenti, hogy a változót "HELYBEN" hozza létre.
A class azt jelenti, hogy a változót mindig a heap egy szabad területén hozza létre.Van ez a C# kód:
namespace IntOseEAzObject
{
public class Program
{
static void Main(string[] args)
{
int[] lngt = { 10, 20, 30 };
Struktura strct = new Struktura(10, 20, 30, lngt);
long lng = strct.lng;
int lng_2 = strct.lng_2;
int lng_3 = strct.lng_3;
int lng_4 = lngt[0];
int lng_5 = lngt[1];
int lng_6 = lngt[2];
Console.WriteLine("{0} {1} {2} {3} {4} {5}", lng, lng_2, lng_3, lng_4, lng_5, lng_6);
}
}
struct Struktura
{
public int lng;
public int lng_2;
public int lng_3;
public int[] list;
public Struktura(int lng, int lng_2, int lng_3, int[] list)
{
this.lng = lng;
this.lng_2 = lng_2;
this.lng_3 = lng_3;
this.list = list;
}
}
}
Ez assemblyben így mutatkozik meg(csak a releváns részt másolom be ide:int[] lngt = { 10, 20, 30 };
011508A5 mov ecx,63F6639Eh
011508AA mov edx,3
011508AF call CORINFO_HELP_NEWARR_1_VC (0107322Ch)
011508B4 mov dword ptr [ebp-70h],eax
011508B7 mov ecx,1084EF4h
011508BC call 65485DE0 ;ez a metódus adja vissza az eax-ban az lngt[] címét.
011508C1 mov dword ptr [ebp-74h],eax
011508C4 lea eax,[ebp-74h]
011508C7 push dword ptr [eax]
011508C9 mov ecx,dword ptr [ebp-70h]
011508CC call 65485A80
011508D1 mov eax,dword ptr [ebp-70h]
011508D4 mov dword ptr [ebp-40h],eax
Struktura strct = new Struktura(10, 20, 30, lngt);
011508D7 push 14h
011508D9 push 1Eh
011508DB push dword ptr [ebp-40h]
011508DE lea ecx,[ebp-50h]
011508E1 mov edx,0Ah
011508E6 call IntOseEAzObject.Struktura..ctor(Int32, Int32, Int32, Int32[]) (01150450h)
long lng = strct.lng;
011508EB lea eax,[ebp-50h]
011508EE mov eax,dword ptr [eax+4] ;Itt mindig az ebp-hez viszonyított helyzethez határozza meg. strct[0] esetén ebp+4
011508F1 cdq
011508F2 mov dword ptr [ebp-58h],eax
011508F5 mov dword ptr [ebp-54h],edx
int lng_2 = strct.lng_2;
011508F8 lea eax,[ebp-50h]
011508FB mov eax,dword ptr [eax+8] ;strct[1] esetén ebp+8
011508FE mov dword ptr [ebp-5Ch],eax
int lng_3 = strct.lng_3;
01150901 lea eax,[ebp-50h]
01150904 mov eax,dword ptr [eax+0Ch] ;strct[3] esetén ebp+12
01150907 mov dword ptr [ebp-60h],eax
int lng_4 = lngt[0];
0115090A mov eax,dword ptr [ebp-40h]
0115090D cmp dword ptr [eax+4],0
01150911 ja IntOseEAzObject.Program.Main(System.String[])+0D0h (01150918h)
01150913 call 656EFE40 ;referencia típus esetén(lngt[0]) mindig ezt a metódust hívja meg, ami az eax-ban adja vissza a referencia címét, ami a heap-ben van. Előtte nem véletleül ellenőrzi le, hogy érvényes-e a cím.
01150918 mov eax,dword ptr [eax+8]
0115091B mov dword ptr [ebp-64h],eax
int lng_5 = lngt[1];
0115091E mov eax,dword ptr [ebp-40h]
01150921 cmp dword ptr [eax+4],1
01150925 ja IntOseEAzObject.Program.Main(System.String[])+0E4h (0115092Ch)
01150927 call 656EFE40 ;lngt[1] esetén is ugyanazt a metódust hívja meg.
0115092C mov eax,dword ptr [eax+0Ch]
0115092F mov dword ptr [ebp-68h],eax
int lng_6 = lngt[2];
01150932 mov eax,dword ptr [ebp-40h]
01150935 cmp dword ptr [eax+4],2
01150939 ja IntOseEAzObject.Program.Main(System.String[])+0F8h (01150940h)
0115093B call 656EFE40 ;lngt2 esetén is ugyanazt a metódust hívja meg.
01150940 mov eax,dword ptr [eax+10h]
01150943 mov dword ptr [ebp-6Ch],eax
Console.WriteLine("{0} {1} {2} {3} {4} {5}", lng, lng_2, lng_3, lng_4, lng_5, lng_6);
01150946 mov eax,dword ptr ds:[483244Ch]
0115094C mov dword ptr [ebp-78h],eax
0115094F mov ecx,63F664BAh
01150954 mov edx,6A kódba magyarázatot is tettem. Érdemes elgondolkodni rajt. Sztem.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Külföldi rendelések: boltok, fizetés, postázás
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Milyen okostelefont vegyek?
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Vezetékes FEJhallgatók
- Arc Raiders
- Google Pixel topik
- Path of Exile (ARPG)
- PayPal
- Megtartotta Európában a 7500 mAh-t az Oppo
- További aktív témák...
- Alpenföhn Ben Nevis processzorhűtő
- Eladó konfig! I9-14900K 2TB SSD 32GB DDR5 RTX5070 12GB!
- Szép! Lenovo ThinkPad P15 G2 Tervező Vágó Laptop -75% 15,6" i7-11850H 32/512 A3000 4GB /1,5 Millió/
- !AKCIÓ! GAMER PC Intel Core i9-10900X/ASUS ROG Strix X299-E Gaming/NVIDIA GeForce RTX 3080/32 GB RAM
- Rockrider Race 940 S
- Bomba ár! HP ProBook 440 G8 - i5-11GEN I 8GB I 256SSD I HDMI I 14" FHD I Cam I W11 I Gar
- Apple iPhone 12 64GB,Újszerű,Dobozaval,12 hónap garanciával
- PS Plus előfizetések kedvező áron
- GYÖNYÖRŰ iPhone 12 mini 64GB Kék -12 hónap JÓTÁLLÁS - Kártya független, 100% gyári Akkumulátor
- GYÖNYÖRŰ iPhone 12 Pro Max 128GB Pacific Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3940, 100% Akksi
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest



