Artikel Terbaru

10 Contoh Program Perbedaan Array dan Pointer Bahasa C

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.

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

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.

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 *'

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:

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

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.

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

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.

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

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

Komentar

  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

Posting Komentar

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

Hot Artikel!!!

Enkapsulasi pada Java

6 Tahap Utama dalam Melakukan Kompilasi Program Hello World Java

6 Contoh Program Method Overloading pada Java