this → Artikel Baru – ( Atrikel Lama ↓ )

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

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


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.

Baca juga, tentang materi bahasa pemrograman lainnya melalui Materi Lengkap 

Bahasa Pemrograman [klik].


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, 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