Lompat ke konten Lompat ke sidebar Lompat ke footer

Pointer Void Bahasa C Beserta Fungsi dan Penjelasannya

Sebuah pointer void merupakan jenis pointer yang tidak memiliki asosiasi data tipe apapun didalamnya. Sebuah pointer void dapat menampung nilai alamat dari tipe data apapun dan dapat dibuat typecasting ke tipe data apapun pula.


Pointer Void Bahasa C Beserta Fungsi dan Penjelasannya
Pointer Void Bahasa C

Sebelum memahami materi tentang Pointer Void Bahasa C Beserta Fungsi dan Penjelasannya, terlebih dahulu pelajari materi tentang: Representasi Uncommon Elemen Array Bahasa C [klik]Mendeklarasikan Pointer Ke Sebuah Fungsi Bahasa C [klik], dan Pointer VS Array Bahasa C Beserta Penjelasannya [klik].

Contoh Tipe Data:
  • int a = 10;
  • char b = 'x';

Contoh Pointer dari Tipe Data
  • void *p = &a; // void pointer menampung nilai alamat dari variabel int 'a'.
  • p = &b; // void pointer menampung alamat dari char 'b'.

Keunggulan Pointer Void
  • malloc() dan calloc() mengembalikan tipe void * dan memungkinkan fungsi tersebut untuk digunakan pada alokasi memori dari tipe data apapun.
  • pointer void pada bahasa C digunakan untuk implementasi fungsi generic pada bahasa C. Contoh, perbandingan fungsi yang digunakan pada qsort().

Contoh:

int main(void)

{

// Fungsi malloc() makan

// mengembalikan nilai void *

// yang dapat dilakukan

// typecast ke tipe data

// apapun seperti int *, char

// *, dan lain sebagainya.

int *x = malloc(sizeof(int) * n);

}


Catatan: Program sebelumnya dapat dikompilasi pada bahasa C, tetapi tidak dapat dikompilasi pada C++, karena pada C++ harusi dilakukan typecasting secara eksplisit dari malloc to (int *) untuk nilai return-nya.

Baca Juga:

Fakta Menarik Tentang Pointer Void
  • Pointer void tidak dapat dilakukan dereferensi.
  • Standar C tidak memberikan akses ke aritmatika pointer dengan menggunakan pointer void. Namun demikian, pada GNU C, hal tersebut dimungkinkan karena nilai ukuran dari void adalah 1.

Contoh:

#include<stdio.h>


int main()

{

int a = 10;

void *ptr = &a;

printf("%d", *ptr);


return 0;

}

Output:
Compiler Error: 'void*' is not a pointer-to-object type

Contoh:

#include<stdio.h>


int main()

{

int a = 10;

void *ptr = &a;

printf("%d", *(int *)ptr);


return 0;

}

Output:
10

Contoh: kompilasi program menggunakan gcc.

#include<stdio.h>


int main()

{

int a[2] = {1, 2};

void *ptr = &a;

ptr = ptr + sizeof(int);

printf("%d", *(int *)ptr);


return 0;

}

Output:
2

Catatan: program sebelumnya mungkin tidak dapat bekerja secara optimal jika dikompilasi pada jenis kompilator yang berbeda.

Artikel ini didedikasikan kepada: Diah Ayu Gusti Arianti, Dzikru Robby Ar Rofiqi, Endang Rusniwati, Ericsson Dhimas Niagara, dan Fanca Bungsu Paranta.

6 komentar untuk "Pointer Void Bahasa C Beserta Fungsi dan Penjelasannya"

  1. Apa yang dimaksud dengan pointer void pada bahasa C?

    BalasHapus
    Balasan
    1. Pointer void pada bahasa C merupakan pointer yang tidak berkaitan dengan tipe data apapun. Pointer ini menunjuk ke beberapa lokasi data pada lokasi penyimpanan.

      Hapus
    2. Pointer void memiliki fungsi untuk menunjuk ke alamat variabel lainnya yang telah dideklarasikan pada bahasa C.

      Hapus
    3. Pointer void juga disebut sebagai pointer umum yang menggunakan malloc() dan calloc() untuk mengembalikan nilai * atau pointer generik.

      Hapus
  2. Kapa pointer void digunakan pada program bahasa C?

    BalasHapus
    Balasan
    1. Pointer void digunakan ketika dilakukan proses penyimpanan object dari tipe data apapun, dan dapat digunakan untuk mengambil nilai object dari tipe data apapun dengan menggunakan operator indirection dengan tipecasting yang tepat.

      Hapus

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 -