Karat data apa yang menyimpan variabel yang telah menetapkan struct untuknya

Jan 16 2021

Jika kami memiliki kode berikut:

struct Person {
    age: i32
}

fn main() {
    let person =  Person{age : 52};
}

Saya tahu bagaimana menggunakan struct dan semua tapi apa yang sebenarnya di dalam variabel person?

Apakah ini penunjuk ke elemen pertama dari struct? (Karena semua elemen bersebelahan (?) Maka compiler akan mengetahui dimana semua elemen berada)

Jawaban

5 Acorn Jan 16 2021 at 21:03

apa sebenarnya di dalam variabel person?

Satu-satunya hal yang "di dalam" adalah age, dengan total 4 byte.

Apakah ini penunjuk ke elemen pertama dari struct?

Tidak, ini bukan penunjuk. Ini hanyalah nilai itu sendiri, yang berarti itu akan disimpan dalam tumpukan frame / fungsi saat ini, secara praktis (kompiler dapat menghapusnya seluruhnya dari memori atau bahkan tidak menggunakannya, jika perilaku yang dapat diamati tidak berubah, tetapi itu adalah pengoptimalan: secara konseptual, variabel ditempatkan di tumpukan).

(Karena semua elemen bersebelahan (?) Maka compiler akan mengetahui dimana semua elemen berada)

Kompilator dalam sebagian besar bahasa yang dikompilasi selalu mengetahui tata letak yang tepat dari semua tipe (kecuali kasus khusus). Itulah alasan mengapa banyak pengoptimalan dapat dilakukan dalam bahasa tersebut sebelumnya. Informasi ini biasanya dibuang dalam bahasa pemrograman sistem, itulah sebabnya mereka biasanya tidak mendukung refleksi dan mengapa cukup sulit untuk mendekompilasi kembali ke kode sumber.