Lompat ke konten Lompat ke sidebar Lompat ke footer

Sizeof untuk Parameter Array Bahasa C

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.


Alasan Larangan Penggunaan Sizeof untuk Parameter Array Bahasa C
Ilustrasi Sizeof Bahasa C

Sebelum memahami lebih dalam materi tentang Sizeof untuk Parameter Array Bahasa C, terlebih dahulu pelajari materi tentang: Menyimpan Tulisan Bahasa C Menggunakan String [klik], Array Bahasa C dan Fungsinya [klik], dan Exec Family Bahasa C dan Fungsinya [klik].

Contoh: 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.

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.

Contoh:

#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;

}


Artikel ini didedikasikan kepada: Novia Ratih Handadari, Ratih Ismawati, Ria Dwi Cristanti, Rosa Damayanti, dan Sebastianus Ferdian Aji Putra Pradana.

5 komentar untuk "Sizeof untuk Parameter Array Bahasa C"

  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

Hubungi admin melalui Wa : +62-896-2414-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 -