Artikel Terbaru

Alasan Larangan Penggunaan Sizeof untuk Parameter Array Bahasa C

Berikut dijelaskan tentang larangan penggunaan Sizeof untuk parameter array pada bahasa C, perhatikan program berikuti ini:

#include<stdio.h>

 

void fun(int arr[])

{int i;

// Sizeof tidak seharusnya

// digunakan pada bagian ini

// untuk mendapatkan nilai

// dari elemen array.

 

// Penggunaan sizeof tidak

// tepat.

int arr_size = sizeof(arr)/sizeof(arr[0]); 

for (i = 0; i < arr_size; i++){

/*Hanya dieksekusi sekali*/

arr[i] = i;}

}

 

int main()

{int i;

int arr[4] = {0, 0 ,0, 0};

fun(arr);

 

/* Penggunaan sizeof aman*/

for(i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)

printf(" %d " ,arr[i]);

getchar();

return 0;

}

Output: 
0 0 0 0

Fungsi fun() menerima parameter array arr[] dan mencoba menemukan angka dari elemen pada arr[] menggunakan operator sizeof.

Pada bahasa C, parameter array akan diperlakukan sebagai pointer. Sehingga, ekspresi sizeof(err)/sizeof(arr[0]) akan menjadi sizeof(int*)/sizeof(int) dengan hasilnya adalah 1, dalam program 32bit, dan untuk looping dalam fun() akan dieksekusi hanya sekali terlepas dari ukuran array itu sendiri.

Oleh karena itu, sizeof seharusnya tidak digunakan untuk mendapatkan angka dari elemen pada contoh kasus yang diberikan sebelumnya. Sebuah parameter terpisah dari ukuran array atau length harus dilewatkan menuju fun(). Berikut contoh program yang telah dilakukan koreksi adalah:

#include<stdio.h>

void fun(int arr[], size_t arr_size)

{

int i;

for (i = 0; i < arr_size; i++)

{arr[i] = i;}

}

 

int main()

{

int i;

int arr[4] = {0, 0 ,0, 0};

fun(arr, 4);

 

for(i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)

printf(" %d ", arr[i]);

getchar();

 

return 0;

}

Komentar

  1. Apa fungsi operator sizeof pada bahasa C?

    BalasHapus
    Balasan
    1. Operator sizeof adalah operator yang paling umum pada bahasa C. Operator tersebut adalah operator unary yang digunakan untuk menghitung ukuran nilai operannya. Operator tersebut mengembalikan nilai atau ukuran variabel, dan ketika digunakan dengan tipe data tertentu, maka akan mengembalikan jumlah memori yang dialokasikan untuk tipe data tersebut.

      Hapus
  2. Bagaimana cara menentukan jumlah total elemen array pada bahasa c dengan operator sizeof?

    BalasHapus
    Balasan
    1. Operator sizeof pada sebuah array akan mengembalikan total memori yang ditempati oleh array tersebut dalam satuan byte. Untuk dapat menentukan jumlah total elemen array, maka dapat dilakukan dengan cara membagi total memori yang ditempati oleh array dengan ukuran dari setiap elemen.

      Hapus
  3. Operator sizeof akan mengembalikan ukuran dari sebuah pointer, bukan dari sebuah array, ketika array tersebut diteruskan oleh nilai ke suatu fungsi tertentu.

    BalasHapus

Posting Komentar

Respon komentar 7 x 24 jam, so please be patient :D

Hot Artikel!!!

Enkapsulasi pada Java

6 Tahap Utama dalam Melakukan Kompilasi Program Hello World Java

6 Contoh Program Method Overloading pada Java