Rumah >masalah biasa >Cara menggunakan kesatuan dalam bahasa c
Penggunaan kesatuan dalam bahasa C ialah jenis data khas yang membolehkan jenis data yang berbeza disimpan di lokasi memori yang sama Penggunaan kesatuan boleh membantu kami menjimatkan ruang memori dan boleh beralih antara jenis data yang berbeza. Apabila menggunakan kesatuan, anda perlu ambil perhatian bahawa ahli yang sepadan adalah sah dan hanya seorang ahli boleh diakses pada masa yang sama.
Kesatuan dalam bahasa C ialah jenis data khas yang membolehkan jenis data yang berbeza disimpan di lokasi memori yang sama. Penggunaan kesatuan boleh membantu kami menjimatkan ruang memori dan menjadikannya mudah untuk menukar antara jenis data yang berbeza.
1. Tentukan kesatuan:
Dalam bahasa C, kita boleh menggunakan kata kunci kesatuan untuk menentukan jenis kesatuan. Kesatuan ditakrifkan sama dengan struktur, tetapi semua ahli dalam kesatuan berkongsi ruang ingatan yang sama. Sintaks kesatuan adalah seperti berikut:
union union_name { member_type member1; member_type member2; // ... };
Di mana, union_name ialah nama kesatuan, ahli_type ialah jenis data ahli, ahli1, ahli2, dll. ialah ahli kesatuan.
Contoh:
union Data { int i; float f; char str[20]; };
2. Akses ahli kesatuan:
Kita boleh menggunakan pengendali titik (.) untuk mengakses ahli kesatuan. Memandangkan ahli kesatuan berkongsi ruang memori yang sama, hanya seorang ahli boleh diakses pada masa yang sama. Sintaks untuk mengakses ahli kesatuan adalah seperti berikut:
union_name.member_name
Contoh:
union Data data; data.i = 10; printf("data.i = %d\n", data.i); data.f = 3.14; printf("data.f = %f\n", data.f); strcpy(data.str, "Hello"); printf("data.str = %s\n", data.str);
Dalam contoh di atas, kami mentakrifkan kesatuan bernama Data dan mencipta pembolehubah bernama data. Kami boleh mengakses ahli kesatuan yang berbeza melalui data.i, data.f dan data.str.
3. Saiz kesatuan:
Saiz kesatuan bergantung pada saiz ahli terbesarnya. Memandangkan semua ahli kesatuan berkongsi ruang memori yang sama, saiz kesatuan boleh cukup besar untuk menampung ahli terbesar.
Contoh:
union Data { int i; float f; char str[20]; }; printf("sizeof(union Data) = %lu\n", sizeof(union Data));
Dalam contoh di atas, kami menggunakan operator sizeof untuk mendapatkan saiz Data kesatuan. Memandangkan saiz jenis apungan biasanya lebih besar daripada saiz tatasusunan int dan char, saiz data kesatuan akan sama dengan saiz apungan.
4. Aplikasi kesatuan:
Kesatuan sering digunakan dalam situasi berikut:
- Jimat ruang memori: Apabila hanya satu daripada berbilang ahli akan digunakan, kesatuan boleh digunakan untuk menjimatkan ruang memori.
- Penukaran jenis: Anda boleh menggunakan kesatuan untuk menukar antara jenis data yang berbeza, seperti menukar integer kepada nombor titik terapung, menukar nombor titik terapung kepada tatasusunan aksara, dsb.
Contoh:
union Convert { int i; float f; }; union Convert convert; convert.i = 10; printf("convert.i = %d\n", convert.i); printf("convert.f = %f\n", convert.f); convert.f = 3.14; printf("convert.i = %d\n", convert.i); printf("convert.f = %f\n", convert.f);
Dalam contoh di atas, kami mentakrifkan kesatuan bernama Convert, yang mengandungi ahli i jenis int dan ahli f jenis apungan. Dengan mengubah suai seorang ahli kesatuan, kita boleh memperoleh nilai yang sepadan dalam ahli lain, dengan itu mencapai penukaran jenis.
Perlu diambil perhatian bahawa menggunakan kesatuan memerlukan berhati-hati kerana ahli kesatuan berkongsi ruang memori yang sama. Selepas mengubah suai nilai satu ahli, nilai ahli lain akan ditimpa. Oleh itu, apabila menggunakan kesatuan, anda perlu memastikan bahawa ahli yang sepadan adalah sah dan hanya seorang ahli boleh diakses pada masa yang sama.
Untuk meringkaskan, kesatuan dalam bahasa C ialah jenis data khas yang membolehkan jenis data yang berbeza disimpan dalam lokasi memori yang sama. Dengan mentakrifkan kesatuan dan mengakses ahlinya, kami boleh menjimatkan ruang memori dan menukar antara jenis data yang berbeza. Apabila menggunakan kesatuan, anda perlu ambil perhatian bahawa ahli yang sepadan adalah sah dan hanya seorang ahli boleh diakses pada masa yang sama.
Atas ialah kandungan terperinci Cara menggunakan kesatuan dalam bahasa c. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!