Hari ini saya mengajar beberapa teman bagaimana cara menggunakan Cs struct
. Salah satu dari mereka bertanya apakah Anda dapat mengembalikan sebuah struct
fungsi, yang saya jawab: "Tidak! Anda akan mengembalikan pointer ke malloc
ed secara dinamis struct
."
Berasal dari seseorang yang terutama melakukan C ++, saya berharap tidak dapat mengembalikan struct
nilai s. Dalam C ++ Anda bisa membebani operator =
objek Anda secara berlebihan dan masuk akal untuk memiliki fungsi untuk mengembalikan objek Anda berdasarkan nilai. Namun, dalam C, Anda tidak memiliki opsi itu dan itu membuat saya berpikir apa yang sebenarnya dilakukan oleh kompiler. Pertimbangkan yang berikut ini:
struct MyObj{
double x, y;
};
struct MyObj foo(){
struct MyObj a;
a.x = 10;
a.y = 10;
return a;
}
int main () {
struct MyObj a;
a = foo(); // This DOES work
struct b = a; // This does not work
return 0;
}
Saya mengerti mengapa struct b = a;
tidak bekerja - Anda tidak bisa kelebihan operator =
untuk tipe data Anda. Bagaimana a = foo();
kompilasi itu baik-baik saja? Apakah ini berarti sesuatu selain struct b = a;
? Mungkin pertanyaan yang ingin diajukan adalah: Apa yang sebenarnya dilakukan oleh return
pernyataan bersama =
?
[Sunting]: Ok, saya hanya menunjuk struct b = a
adalah kesalahan sintaksis - itu benar dan saya idiot! Tapi itu membuatnya semakin rumit! Penggunaan struct MyObj b = a
memang berhasil! Apa yang kulewatkan di sini?
struct MyObj b = a;
tampaknya berhasil :)
struct b = a;
adalah kesalahan sintaksis. Bagaimana jika Anda mencobastruct MyObj b = a;
?