Pemrograman C

Ukuran operator dalam bahasa C

Ukuran operator dalam bahasa C
Pada artikel ini, kita akan belajar tentang operator sizeof di C. Ini adalah operator unary yang banyak digunakan dalam pengembangan perangkat lunak tertanam, yang membantu kami mengetahui ukuran operan. Oleh karena itu, nilai kembalian dari operator sizeof membantu kita untuk memahami jumlah byte yang dialokasikan dalam memori komputer untuk menampung variabel atau tipe data tertentu.

Memahami Ukuran:

Sebelum kita masuk ke pembahasan ukuran operator, mari kita pahami dulu pengertian dari operator. Operator diwakili oleh token atau simbol yang digunakan untuk melakukan operasi seperti penambahan, pengurangan, perkalian, pembagian, dll. pada nilai atau variabel (Operan). Misalnya, "*" adalah simbol yang digunakan untuk mewakili operasi perkalian, dan bekerja pada dua operan (hasil = a * b ;). Ini adalah contoh dari operator biner.

Namun, jika operator bekerja hanya pada satu operan, kami menyebut operator tersebut sebagai operator unary. Operator sizeof merupakan salah satu operator unary yang ada pada bahasa pemrograman C dan ternyata hanya beroperasi pada satu operand saja. Operator sizeof mengembalikan ukuran operan. Artinya, dari nilai kembalian operator Sizeof, kita dapat dengan jelas mengatakan berapa byte yang dialokasikan untuk menampung operan tertentu dalam memori komputer.

Memori komputer adalah kumpulan unit memori (i.e. byte). Ketika sizeof (int) mengembalikan empat dalam sistem komputer tertentu, kita dapat mengatakan bahwa variabel integer membutuhkan 4 byte untuk menyimpan nilainya dalam memori sistem komputer tertentu. Juga, harap dicatat bahwa nilai pengembalian dari operator sizeof juga tergantung pada mesin yang Anda gunakan (sistem 32-bit atau sistem 64-bit).

Sintaksis:

Ukuran(tipe)
Ukuran(ekspresi)

Jenis pengembalian sizeof adalah size_t.

Contoh:

Sekarang karena kita memahami ukuran operator dan mengetahui sintaksnya, mari kita lihat beberapa contoh, yang akan membantu kita memahami konsep dengan cara yang lebih baik.

Sizeof untuk tipe bawaan (contoh1.c):

Dalam program ini, kita akan melihat cara kerja operator sizeof untuk tipe data bawaan seperti int, char, float, double. Mari kita lihat program dan outputnya.

#termasuk
int utama()

printf("Ukuran char = %ld \n", sizeof(char));
printf("Ukuran int = %ld \n", sizeof(int));
printf("Ukuran Pelampung = %ld \n", sizeof(Apungan));
printf("Ukuran Ganda = %ld \n\n", sizeof(ganda));
printf("Ukuran int pendek = %ld \n", sizeof(int pendek));
printf("Ukuran int panjang = %ld \n", sizeof(int panjang));
printf("Ukuran int panjang panjang = %ld \n", sizeof(int panjang panjang));
printf("Ukuran panjang ganda = %ld \n", sizeof(ganda panjang));
kembali 0;

Sizeof untuk Array (contoh2.c)

Dalam program ini, kita akan melihat bagaimana menggunakan operator sizeof untuk berbagai jenis array. Dalam kasus array, operator sizeof akan kembali (Tidak. elemen dalam array * Sizeof (tipe array)). Misalnya, ketika kita mendeklarasikan array tipe integer dari 10 elemen (int SmartPhones [10] ;), sizeof(Smartphones) akan mengembalikan:

(Tidak. elemen di Ponsel Cerdas * sizeof(int)) = (10 * 4) = 40

Mari kita lihat program dan outputnya.

#termasuk
int utama()

int Ponsel Pintar[10];
char NamaTelepon Pintar[10];
Harga SmartPhones ganda[10];
printf("Ukuran int = %ld \n", sizeof(int));
printf("Ukuran char = %ld \n", sizeof(char));
printf("Ukuran Ganda = %ld \n", sizeof(ganda));
/* Cari tahu ukuran Array*/
printf("Ukuran Ponsel Pintar[10] = %ld \n", sizeof(Ponsel Pintar));
printf("Ukuran SmartPhoneNames[10] = %ld \n", sizeof(SmartPhoneNames));
printf("Ukuran Harga Ponsel Pintar[10] = %ld \n", sizeof(Harga Ponsel Pintar));
kembali 0;

Sizeof untuk tipe yang ditentukan pengguna (contoh3.c):

Dalam contoh ini, kita akan melihat bagaimana menggunakan operator sizeof untuk tipe data yang ditentukan pengguna seperti struktur dan gabungan. Mari kita gunakan programnya dan pahami hasilnya.

Sekarang, lihat programnya, dan kita bisa menghitung ukuran SmartPhoneType secara manual. Seperti yang Anda lihat di bawah, SmartPhoneType adalah struktur, dan berisi elemen-elemen berikut:

  • Jumlah variabel tipe karakter = 1 [sp_name]
  • Jumlah variabel tipe integer = 1 [sp_version]
  • Jumlah variabel tipe float= 3 [sp_length, sp_width, sp_height]

Dari contoh-1, kita telah melihat bahwa:

    • Ukuran karakter adalah 1 byte
    • Ukuran bilangan bulat adalah 4 byte
    • Ukuran float adalah 4 byte

Oleh karena itu, jika kita menjumlahkan ukuran semua elemen dalam struktur, kita harus bisa mendapatkan ukuran struktur, i.e. Jenis Ponsel Pintar. Oleh karena itu, ukuran struktur harus = (1 + 4 + 4 + 4 + 4) byte = 17 byte. Namun, output program mengatakan ukuran struktur adalah 20. 3 byte tambahan (sp_name, yang merupakan karakter, mengambil 4 byte, bukan 1 byte) yang dialokasikan untuk struktur karena padding struktur.

#termasuk
/* Buat tipe struktur yang ditentukan pengguna - SmartPhoneType*/
struct SmartPhoneType

char sp_nama;
int sp_versi;
float sp_length;
float sp_width;
mengapung sp_height;
Ponsel Cerdas;
/* Tentukan tipe serikat yang ditentukan pengguna - SmartPhoneUnionType*/
Union SmartPhoneUnionType

char sp_nama;
int sp_versi;
float sp_length;
float sp_width;
mengapung sp_height;
SmartPhone_u;
int utama()

/* Mengetahui ukuran struktur dan gabungan*/
printf("Ukuran struct = %ld \n", sizeof(Ponsel Pintar));
printf("Ukuran gabungan = %ld \n", sizeof(SmartPhone_u));
kembali 0;

Sizeof untuk variabel (contoh4.c):

Contoh program ini menggambarkan bahwa operator sizeof mampu menerima variabel juga dan mengembalikan ukuran variabel.

#termasuk
int utama()

/* Mendeklarasikan variabel dan array char, int, float dan double type */
char var_a, var_b[20];
int var_c, var_d[20];
float var_e, var_f[20];
var_g ganda, var_h[20];
/* Cari tahu ukuran variabel dan array.
Program ini menunjukkan bahwa variabel juga dapat variable
digunakan sebagai operand sizeof operator*/
/* ukuran char, variabel char dan array char*/
printf("Ukuran char = %ld \n", sizeof(char));
printf("Ukuran var_a = %ld \n", sizeof(var_a));
printf("Ukuran var_b[20] = %ld \n\n", sizeof(var_b));
/* ukuran int, variabel int dan array int*/
printf("Ukuran int = %ld \n", sizeof(int));
printf("Ukuran var_c = %ld \n", sizeof(var_c));
printf("Ukuran var_d[20] = %ld \n\n", sizeof(var_d));
/* ukuran float, variabel float dan array float*/
printf("Ukuran Pelampung = %ld \n", sizeof(Apungan));
printf("Ukuran var_e = %ld \n", sizeof(var_e));
printf("Ukuran var_f[20] = %ld \n\n", sizeof(var_f));
/* ukuran double, variabel ganda dan array ganda*/
printf("Ukuran Ganda = %ld \n", sizeof(ganda));
printf("Ukuran var_g = %ld \n", sizeof(var_g));
printf("Ukuran var_h[20] = %ld \n", sizeof(var_h));
kembali 0;

Ukuran untuk ekspresi (contoh5.c):

Dalam program contoh ini, kami akan menunjukkan bahwa operator sizeof juga dapat menerima ekspresi dan mengembalikan ukuran ekspresi yang dihasilkan.

#termasuk
int utama()

int var_a = 5, var_b = 3;
var_c ganda = 2.5, var_d = 4.5;
printf("Ukuran int = %ld \n", sizeof(int));
printf("Ukuran Ganda = %ld \n\n", sizeof(ganda));
printf("Ukuran var_a * var_b = %ld \n", sizeof(var_a * var_b));
printf("Ukuran var_c * var_d = %ld \n", sizeof(var_c * var_d));
/* Di sini kita mengalikan variabel integer dengan variabel ganda.
Oleh karena itu, operator sizeof akan mengembalikan ukuran ukuran maksimum
variabel saya.e. variabel tipe ganda.*/
printf("Ukuran var_a * var_c = %ld \n", sizeof(var_a * var_c));
kembali 0;

Penggunaan praktis sizeof (contoh6.c):

Program contoh ini akan membantu Anda memahami kasus penggunaan praktis dari ukuran operator. Operator Sizeof sangat berguna saat mengalokasikan memori dinamis dari heap menggunakan malloc. Mari kita lihat program dan outputnya.

#termasuk
#termasuk
struktur typedef

char sp_nama;
int sp_versi;
float sp_length;
float sp_width;
mengapung sp_height;
Jenis Ponsel Cerdas;
int utama()

/* Alokasikan memori di memori Heap untuk menampung lima SmartPhoneType
variabel.
*/
SmartPhoneType * SmartPhone_Ptr = (SmartPhoneType *)malloc(5 * sizeof(SmartPhoneType));
jika(SmartPhone_Ptr != NULL)

printf("Memori dialokasikan untuk 5 variabel struktur SmartPhoneType di
memori Tumpukan.\n");

lain

printf("Terjadi kesalahan selama alokasi memori heap!");

kembali 0;

Kesimpulan:

Sizeof adalah operator unary penting dalam bahasa pemrograman C C. Ini membantu kami dalam menentukan ukuran tipe data primitif, tipe data yang ditentukan pengguna, ekspresi, dll. dalam memori komputer. Operator Sizeof memainkan peran penting dalam mengalokasikan memori dinamis di C menggunakan malloc, calloc, dll. dalam memori Heap.

10 Game Teratas untuk Dimainkan di Ubuntu
Platform Windows telah menjadi salah satu platform yang mendominasi untuk bermain game karena persentase besar dari game yang berkembang saat ini untu...
5 Game Arkade Terbaik untuk Linux
Saat ini, komputer adalah mesin serius yang digunakan untuk bermain game. Jika Anda tidak bisa mendapatkan skor tinggi baru, Anda akan tahu apa yang s...
Pertempuran Untuk Wesnoth 1.13.6 Pengembangan Dirilis
Pertempuran Untuk Westnoth 1.13.6 dirilis bulan lalu, adalah rilis pengembangan keenam dalam 1.13.x series dan memberikan sejumlah peningkatan, teruta...