this → Artikel Baru – ( Atrikel Lama ↓ )

4 Cara Sederhana untuk Alokasi Dinamis Array 2D pada Bahasa C

Berikut diperlihatkan dua cara yang dapat dilakukan untuk menciptakan array 2D pada heap atau pada alokasi dinamis array 2D melalui contoh array berikut dimana r adalah baris, dan c adalah kolom, dengan nilai r=3, dan c=4.

01 02 03 04
05 06 07 08
09 10 11 12


Alokasi Dinamis Array 2D Menggunakan Single PointerCara sederhana untuk alokasi memori blok dari ukuran r*c dan akses elemen menggunakan aritmatika pointer sederhana.

Pahami pula, tentang semua konsep desain Web untuk tingkat pemula melalui materi lengkap Bahasa C [klik].


Contoh:

#include <stdio.h>

#include <stdlib.h>

 

void main()

{

 

// Mengambil angka dari baris

// dan kolom  

int r=3, c=4;

int *ptr, count = 0, i;

 

// Alokasi Memori Dinamis

ptr = (int *)malloc((r * c) * sizeof(int))

 

for (i = 0; i < r * c; i++)

{

// Memberikan nilai ke ponter

// dan mencetaknya secara

// simultan.

ptr[i] = i + 1

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

if ((i + 1) % c == 0)

{printf("\n");}

}

 

free(ptr);

}

Output:
1 2 3 4
5 6 7 8
9 10 11 12


Alokasi Dinamis Array 2D Menggunakan Array PointerDengan menggunakan C99, maka dapat diciptakan array pointer dari ukuran r. Bahasa C memungkinkan untuk menciptakan array yang berukuran sama dengan variabel, dimana setelah array pointer tersebut dibuat, maka dapat dilakukan pengalokasian memori secara dinamis untuk setiap baris.

Baca juga, tentang materi bahasa pemrograman lainnya melalui Materi Lengkap 

Bahasa Pemrograman [klik].


Contoh:

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

int r=3, c=4, i, j, count;

int *arr[r];

 

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

arr[i] = (int *)malloc(c * sizeof(int));

 

// Catatan, arr[i][j] adalah

// sama dengan *(*(arr+i)+j)

count = 0;

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

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

arr[i][j] = ++count

 

// atau *(*(arr+i)+j) =

// ++count

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

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

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

 

// Kode lanjutan untuk preses

// alokasi memori dinamis dan

// pembebasan memorinya

return 0;

}

Output:
1 2 3 4 5 6 7 8 9 10 11 12

Alokasi Dinamis Array 2D Menggunakan Pointer to Pointer: Dapat pula diciptakan array dinamis menggunakan pointer ganda. Setelah diciptakan array pointer yang dialokasikan secara dinamis, maka dapat dilakukan pengalokasian memori secara dinamis untuk setiap baris seperti diperlihatkan sebagai berikut.

Contoh:

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

int r=3, c=4, i, j, count;

int **arr = (int **)malloc(r * sizeof(int *));

 

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

arr[i] = (int *)malloc(c * sizeof(int));

 

// Catatan, arr[i][j] adalah

// *(*(arr+i)+j)

count = 0;

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

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

 

// atau *(*(arr+i)+j) =

// ++count

arr[i][j] = ++count

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

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

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

 

// Kode lanjutan untuk preses

// alokasi memori dinamis dan

// pembebasan memorinya

return 0;

}

Output:
1 2 3 4 5 6 7 8 9 10 11 12

Alokasi Dinamis Array 2D Menggunakan double pointer dan satu panggilan malloc:

Contoh:

#include<stdio.h>

#include<stdlib.h>

 

int main()

{

int r=3, c=4, len=0;

int *ptr, **arr;

int count = 0,i,j;

 

len = sizeof(int *) * r + sizeof(int) * c * r;

arr = (int **)malloc(len);

 

// ptr menunjuk ke elemen

// pertama dalam array 2D

ptr = (int *)(arr + r);

 

// looping menunjuk ke pointer

// row untuk lokasi yang

// sesuai pada array 2D

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

arr[i] = (ptr + c * i);

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

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

 

// atau *(*(arr+i)+j) =

// ++count

arr[i][j] = ++count;

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

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

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

return 0;

}

Output:
1 2 3 4 5 6 7 8 9 10 11 12

Komentar

  1. Apa yang dimaksud dengan alokasi memori dinamis pada Bahasa C?

    BalasHapus
    Balasan
    1. Alokasi memori dinamis pada Bahasa C adalah istilah yang mengacu pada manajemen memori secara manual untuk alokasi memori yang sifatnya dinamis pada pemrograman bahasa C melalui sekelompok fungsi dalam library standard C, yaitu malloc, realloc, calloc, dan free. Performanya dari alokasi memori dinamis sifatnya bervariasi terhadap waktu eksekusi program dan ukuran memori yang dibutuhkan.

      Hapus
    2. Alokasi memori dinamis merukanan sebuah program pelaksana yang meminta sistem operasi untuk memberikan blok memori utama. Program selanjutnya menggunakan memori tersebut untuk beberapa tujuan tertentu yang telah diprogram. Heap dapat mengembangkan "holes" dimana memori yang dialokasikan sebelumnya telah dikembalikan diantara blok memori yang masih digunakan pada Bahasa C.

      Hapus
  2. Apa fungsi calloc dan malloc pada alokasi memori dinamis pada Bahasa C?

    BalasHapus
    Balasan
    1. Alokasi memori dinamis memungkinkan program bahasa C untuk mengalokasikan memori saat runtime. Fungsi berbeda yang digunakan untuk mengalokasikan memori secara dinamis pada saat runtime adalah malloc() yang mengalokasikan blok memori dalam satuan byte ketika runtime, dan calloc() yang mengalokasikan blok memori secara terus menerus pada saat runtime.

      Hapus

Posting Komentar

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

Catatan: setiap iklan yang ditayangkan pada blog ini bersumber dari google adsense. Dengan jenis iklan yang dipilih adalah, sebagai berikut.

POIN 1, Iklan yang ditampilkan hanya boleh berbahasa indonesia atau berbahasa inggris. Tidak menerima jenis iklan dalam bahasa yang lain selain yang telah disebutkan karena blog ini dibuat untuk para pengunjung dari negara atau orang yang berbahasa Indonesia.

POIN 2, Setiap gambar yang ditampilkan pada iklan sifatnya tidak mengganggu para pengunjung yang melihat blog, atau tidak boleh menampilkan gambar yang bersifat menjijikkan atau merangsang rasa mual.

POIN 3, Jenis iklan yang dipasang bukan merupakan iklan spam, atau berisi dan mengarahkan pengunjung ke alamat yang berbahaya atau bersifat penipuan.

POIN 4, Segala bentuk iklan tunduk dan patuh pada ketentuan dari pihak Adsense google dan pemilik blog.

POIN 5, Segala jenis iklan yang tidak bertentangan dengan poin 1-4 yang dijelaskan sebelumnya, maka iklan tersebut dapat ditampilkan pada blog.



~ Ikatlah Ilmu dengan Memostingkannya ~

Hot Artikel

Enkapsulasi pada Java

Perbedaan stdio.h dan stdlib.h pada Bahasa C

Penjelasan Singkat tentang Konsep Asosiasi, Komposisi, dan Agregasi pada Java

3 Jenis Utama Looping pada Java