Langsung ke konten utama

Inisialisasi Ukuran Variabel Array Bahasa C

Pada standard C99 diijinkan untuk mengetahui ukuran variabel dari array. Tetapi, tidak seperti array normal, ukuran variabel array tidak bisa diinisialisasi pada bahasa C.

Contoh, Program berikut dapat dikompilasi dan dijalankan dengan baik pada kompilator yang kompatibel dengan C99.

#include<stdio.h>

 

int main()

{

int M = 2;

int arr[M][M];

int i, j;

 

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

{

for (j = 0; j < M; j++)

{arr[i][j] = 0;

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

printf("\n");

}

 

return 0;

}

Output:
0 0
0 0

Namun program berikut ini akan gagal dengan hasil kompilasi error.

#include<stdio.h>

 

int main()

{

int M = 2;

// Mencoba menginisialisasi

// semua nilai menjadi 0

int arr[M][M] = {0};

int i, j;

 

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

{

for (j = 0; j < M; j++)

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

printf("\n");

}

 

return 0;

}

Output:
Compiler Error: variable-sized object may not be initialized

Komentar

  1. Bagaimana cara melakukan inisialisasi parsial pada array bahasa C?

    BalasHapus
    Balasan
    1. Sebuah array mungkin saja untuk dilakukan inisialisasi sebagian, dengan cara menyediakan item data yang lebih sedikit daripada ukuran array itu sendiri. Elemen array yang tersisa secara otomatis akan diinisialisasi ke nilai nol. Kompilator akan secara otomatis mengukur nilai array tersebut agar sesuai dengan data yang telah diinisialisasi.

      Hapus
    2. Inisialisasi untuk array merupakan daftar ekspresi konstanta yang dipisahkan dengan tanda koma yang diapit dengan tanda kurung kurawal. Pengembang tidak perlu menginisialisasi semua elemen dalam sebuah array, dimana jika sebuah array hanya diinisialisasi sebagian saja, maka elemen yang tidak diinisialisasi akan menerima nilai 0 dari tipe data yang sesuai.

      Hapus
  2. Ada berapa tipe array pada bahasa C?

    BalasHapus
    Balasan
    1. Ada tiga jeni array yang terdapat pada bahasa C, yaitu: array indeks, array multidimensi, dan array asosiatif.

      Hapus

Posting Komentar

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