Pinned

Tipe Data size_t pada Bahasa C dan Fungsinya

Ketika menggunakan object size_t, maka dapat dipastikan bahwa semua hal yang termasuk dalam konteks tersebut akan digunakan, termasuk rumus aritmatik, dengan nilai yang bersifat tidak negatif.


Tipe Data size_t pada Bahasa C
Ilustrasi Tipe Data size_t pada Bahasa C

size_t adalah tipe data unsigned integral yang didefinsikan dalam berbagai file header adalah sebagai berikut:
  • <stddef.h>
  • <stdio.h>
  • <stdlib.h>
  • <string.h>
  • <time.h>
  • <wchar.h>

Sebelum memahami lebih dalam materi tentang Tipe Data size_t pada Bahasa C dan Fungsinya, terlebih dahulu pelajari materi tentang: Tipe Data Long Bahasa C Beserta Fungsi dan Perbedaan Kebutuhannya [klik], Perbandingan Nilai Float Bahasa C Terhadap Nilai Lainnya [klik], dan Integer Promotion Bahasa C dan Fungsinya [klik].

Size_t merupakan tipe data yang digunakan untuk merepresentasikan ukuran dari objek dalam satuan byte dan karena itu tipe data tersebut digunakan sebagai tipe return oleh operator sizeof. Tipe data tersebut menjamin untuk dapat mengandung ukuran data yang cukup besar dari object besar yang dapat ditangani oleh sistem host. Pada dasarnya ukuran maksimun yang diijinkan adalah tergantung dari kompilator; jika kompilator adalah 32bit maka secara sederhana dibuat typedef untuk unsigned int tetapi jika kompilator adalah 64bit maka typedef adalah untuk unsigned long long. Tipe data size_t tidak pernah bernilai negatif.

Terdapat banyak library fungsi C seperti mallocmemcpy, dan strlen argumen dan tipe return-nya dideklarasikan sebagai size_t. Contoh:

// Deklarasi dari berbagai fungsi standar library.

// Berikut adalah argumen dari 'n' yang mengacu pada
// jumlah blok maksimum yang dapat dialokasikan
// yang dijamin akan menjadi tidak bernilai negatif
void *malloc(size_t n);

// Ketika melakukan copy 'n' bytes dari 's2' ke 's1'
// n harus berada dalam posisi integer yang tidak negatif.
void *memcpy(void *s1, void const *s2, size_t n);

// strlen() menggunakan size_t karena panjang string setidaknya selalu 0.

size_t strlen(char const *s);

size_t atau tipe unsigned apapun mungkin lebih sering digunakan sebagai variabel looping yang umumnya lebih baik atau sama dengan 0.

// Program bahasa C untuk mende-

// monstrasikan bahwa

// size_t ataupun

 

// tipe data unsigned int

// apapun harus digunakan

 

// hati-hati pada

// bagian looping

#include<stdio.h>

#define N 10

 

int main()

{

int a[N];

 

// Berjalan normal

for (size_t n=0;n<N;++n) {

a[n] = n;

}

 

// Namun perulangan berkeba-

// likan sifatnya sedikit

 

// mengelabui untuk tipe da-

// ta unsigned yang dapat

 

// menyebabkan terjadi

// infinite loop

for (size_t n = N-1; n >= 0; --n)

printf("%d ", a[n]);

}

Output:
infinite loop dan segmentation fault

5 komentar:

  1. Apa yang dimaksud dengan size_t pada bahasa C?

    BalasHapus
    Balasan
    1. Tipe data size_t adalah tipe data integral unsigned. Tipe data ini mewakili ukuran objek dalam ukuran byte dan dikembalikan oleh operator sizeof. Tipe data ini digunakan untuk melakukan pengindeksan dan penghitungan nilai array, dimana nilai tersebut tidak akan pernah bisa bernilai negatif.

      Hapus
  2. size_t adalah tipe data bilangan bulat unsigned dasar dari bahasa pemrograman C/C++. Tipe data ini adalah jenis hasil yang dikembalikan dari operator sizeof. Ukuran tipe data dapat dipilih sehingg dapat menyimpan ukuran maksimum dari array yang secara teori dimungkinkan dari tipe data apapun. Pada sistem 32bit, size_t akan mengambil ukuran 32bit, sedangkan pada sistem 64bit, size_t akan mengambil ukuran sebesar 64bit.

    BalasHapus
  3. Apa perbedaan antara tipe data int dan size_t pada bahasa C?

    BalasHapus
    Balasan
    1. Tipe data int adalah tipe data bilangan bulat bertanda atau signed, yang mewakili nilai integral positif dan integral negatif. Sedangkan size_t adalah bilangan bulat tak bertanda atau unsigned, yang tidak mendukung nilai dari integral negatif.

      Hapus

Hubungi admin melalui Wa : +62-896-2514-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -