Senin, November 18, 2019

Tipe Data size_t pada bahasa c

size_t adalah tipe data unsigned integral yang didefinsikan dalam berbagai file header seperti:

<stddef.h>, <stdio.h>, <stdlib.h>, <string.h>, <time.h>, <wchar.h>

Adalah 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 malloc, memcpy, dan strlen argumen dan tipe return-nya dideklarasikan sebagai size_t. Contoh:

// Declaration of various standard library functions.

// Here argument of 'n' refers to maximum blocks that can be
// allocated which is guaranteed to be non-negative.
void *malloc(size_t n);

// While copying 'n' bytes from 's2' to 's1'
// n must be non-negative integer.
void *memcpy(void *s1, void const *s2, size_t n);

// strlen() uses size_t because the length of any string
// will always be at least 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.

catatan: Ketika menggunakan object size_t, dapat dipastikan bahwa semua hal dalam konteksnya akan digunakan juga, termasuk rumus aritmatik, dengan nilai yang tidak bersifat negatif. Contoh, kompilasi dari program berikut ini mungkin akan memberikan hasil yang berbeda dari yang diperkirakan:

Output:
infinite loop dan segmentation fault





Related Posts

Tipe Data size_t pada bahasa c
Oleh

"semoga yang memberikan komentar diberikan berkah kebaikan dari Allah, dijauhkan dari kejahatan, dan diberikan pahala ilmu dan amal jariyah dari sepenggal kata yang ia tinggalkan amiin :) "