Lompat ke konten Lompat ke sidebar Lompat ke footer

Array dan Pointer Bahasa C dan Fungsinya

Pointer digunakan untuk menyimpan alamat dari alokasi array dinamis, juga untuk melewatkan array itu sendiri sebagai argumen dari fungsi. Dalam konteks lain, array dan pointer merupakan dua hal yang berbeda satu sama lain. Perhatikan program berikut untuk memahami perbedaan antara pointer dan array dalam bahasa C.

10 Contoh Program Perbedaan Array dan Pointer Bahasa C
Ilustrasi Array dan Pointer Bahasa C

Sebelum memahami lebih dalam materi tentang Array dan Pointer Bahasa C dan Fungsinya, terlebih dahulu pelajari materi tentang: Program Penyimpanan String Bahasa C [klik], Program Menukar String Bahasa C [klik], dan GETS Bahasa C dan Fungsinya [klik].

Contoh: Pada C++

// Program untuk

// memperlihatkan perbedaan

// antara array dan pointer

#include <iostream>

using namespace std;

 

int main()

{

int arr[] = {10,20,30,40,50,60};

int* ptr = arr;

 

// sizof(int) * (jumlah elemen

// arr[]) yang dicetak)

cout << "Sizeof arr[] " 

<< sizeof(arr) << "\n";

 

// sizeof pointer yang dicetak

// sama untuk semua tipe dari

// pointer(char *, void *,

// etc)

cout << "Sizeof ptr " 

<< sizeof(ptr);

return 0;

}

Output:
Sizeof arr[] 24
Sizeof ptr 8


Contoh: Pada Bahasa C

// Program untuk

// memperlihatkan perbedaan

// antara array dan pointer

#include <stdio.h>

 

int main()

{

int arr[] = {10,20,30,40,50,60};

 

int* ptr = arr;

 

// sizof(int) * (jumlah elemen

// arr[]) yang dicetak

printf("Sizeof arr[] %ld\n", sizeof(arr));

 

// sizeof pointer yang dicetak

// sama untuk semua tipe dari

// pointer (char *, void *,

// etc)

printf("Sizeof ptr %ld", sizeof(ptr));

return 0;

}

Output:
Sizeof arr[] 24
Sizeof ptr 8


Catatan: penetapan alamat apa pun ke variabel array adalah tidak diperbolehkan.

Contoh: Pada C++

// Program untuk

// memperlihatkan perbedaan

// array dan pointer

#include <iostream>

using namespace std;

 

int main()

{

int arr[] = {10, 20}, x = 10;

 

int *ptr = &x; 

// Dapat bekerja dengan baik

 

arr = &x; 

// Kompilasi error

 

return 0;

}

Output:
Compiler Error: incompatible types when assigning to
type 'int[2]' from type 'int *'

Contoh: Pada bahasa C

// Program untuk

// memperlihatkan perbedaan

// antara array dan pointer

#include <stdio.h>

 

int main()

{

int arr[] = {10, 20}, x = 10;

 

int *ptr = &x; 

// Dapat bekerja dengan baik

 

arr = &x; 

// Kompilasi error

return 0;

}

Output:
Compiler Error: incompatible types when assigning to
type 'int[2]' from type 'int *'


Meskipun array dan pointer adalah dua hal yang berbeda, namun properti array berikut akan membuat pointer dan array terlihat sama.

satu, Array name dapat memberikan alamat dari elemen pertama pada arrayPerhatikan contoh program berikut:

Contoh: Pada C++

// Program untuk

// memperlihatkan perbedaan

// antara array dan pointer

#include <iostream>

using namespace std;

 

int main()

{

int arr[] = {10,20,30,40,50,60};

 

// Penentuan alamat dari array

// ke ptr

int* ptr = arr;

cout << "Nilai dari elemen pertama adalah" << *ptr;

return 0;

}

Output:
Nilai dari elemen pertama adalah 10

Contoh: Pada bahasa C

#include <stdio.h>

 

int main()

{

int arr[] = {10,20,30,40,50,60};

 

// Penentuan alamat dari array

// ke pointer

int* ptr = arr;

printf("Nilai dari elemen"

" pertama adalah %d", *ptr);

return 0;

}

Output:
Nilai dari elemen pertama adalah 10

dua, Member array dapat diakses menggunakan aritmatika pointerKompilator menggunakan aritmatika pointer untuk mengakses elemen array. Contoh, ekspresi seperti "arr[i]" akan dianggap seperti *(arr+i) oleh kompilator. Inilah alasan kenapa ekspresi seperti *(arr+i) dapat bekerja untuk semua jenis array arr, dan ekspresi seperti ptr[i] juga dapat bekerja pada pointer ptr.

Contoh: Pada C++

#include <iostream>

using namespace std;

 

int main()

{

int arr[]={10,20,30,40,50,60};

 

int* ptr = arr;

 

cout << "arr[2] = " 

<< arr[2

<< "\n";

 

cout << "*(arr + 2) = " 

<< *(arr + 2

<< "\n";

 

cout << "ptr[2] = " 

<< ptr[2

<< "\n";

 

cout << "*(ptr + 2) = " 

<< *(ptr + 2

<< "\n";

 

return 0;

}

Output:
arr[2] = 30
*(arr + 2) = 30
ptr[2] = 30
*(ptr + 2) = 30

Contoh: Pada bahasa C

#include <stdio.h>

 

int main()

{

 

int arr[]={10,20,30,40,50,60};

 

int *ptr = arr;

 

printf("arr[2] = %d\n"

"", arr[2]);

 

printf("*(arr + 2) = %d\n"

"", *(arr + 2));

 

printf("ptr[2] = %d\n"

"", ptr[2]);

 

printf("*(ptr + 2) = %d\n"

"", *(ptr + 2));

 

return 0;

}

Output:
arr[2] = 30
*(arr + 2) = 30
ptr[2] = 30
*(ptr + 2) = 30


tiga, Parameter array selalu dilewatkan sebagai pointer, meskipun ketika menggunakan square bracket.

Contoh: Pada C++

#include <bits/stdc++.h>

using namespace std;

 

int fun(int ptr[])

{

 

int x = 10;

 

// Sizeof pointer dicetak

cout << "sizeof(ptr) = "

<< (int)sizeof(*ptr)

<< endl;

 

// Diperbolehkan karena ptr

// adalah pointer, bukan array

ptr = &x;

 

cout <<"*ptr = " << *ptr;

 

return 0;

}

 

// Driver code

int main()

{

int arr[] = { 10, 20, 30, 40, 50, 60 };

 

// Sizeof array dicetak

cout << "sizeof(arr) = "

<< (int)sizeof(arr)

<< endl;

 

fun(arr);

 

return 0;

}

Output:
sizeof(arr) = 24
sizeof(ptr) = 4
*ptr = 10

Contoh: Pada bahasa C

#include <stdio.h>

 

int fun(int ptr[])

{

int x = 10;

 

// sizeof pointer dicetak

printf("sizeof(ptr) = %d\n", (int)sizeof(*ptr));

 

// Piperbolehkan karena ptr

// adalah pointer, bukan array

ptr = &x;

 

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

 

return 0;

}

 

// Driver code

int main()

{

int arr[] = { 10, 20, 30, 40, 50, 60 };

 

// sizeof array dicetak

printf("sizeof(arr) = %d\n", (int)sizeof(arr));

fun(arr);

return 0;

}

Output:
sizeof(arr) = 24
sizeof(ptr) = 4
*ptr = 10


Artikel ini didedikasikan kepada: Yustian Dewi Krismarani, Abdullah Safi'I Khusnul Huda, Adil Muhammad Firdaus Hermansur, Adila Salma Khatwang, dan Ahmad Rozali.

5 komentar untuk "Array dan Pointer Bahasa C dan Fungsinya"

  1. Apakah pointer masih digunakan pada bahasa OOP?

    BalasHapus
    Balasan
    1. Sudah tidak digunakan lagi, contoh seperti bahasa Java.

      Hapus
  2. Apa manfaat pointer pada bahasa C terhadap array?

    BalasHapus
    Balasan
    1. Pointer dapat menunjuk lokasi alamat array pada program, sehingga lebih menghemat alokasi memori dan penamaan variabel.

      Hapus
    2. Pointer sangat bermanfaa pada program yang menggunakan alokasi memori dinamis seperti link list.

      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 -