Konsep Scope pada Pemrograman C
Nov 17, 2021
Add Comment
Disini kita akan mempelajari tentang Scope. Sesuai katanya, Scope berarti ruang lingkup.
Scope terbagi jadi dua, global dan local.
Langsung saja ke contoh.
#include <stdio.h>
int glb = 5;
void tambah()
{
int x = glb + 5;
printf("x = %d\n", x);
}
int main()
{
tambah();
return 0;
}
Compile & run, maka outputnya akan begini.
Deskripsi:
Program tersebut memiliki sebuah variabel global glb dan sebuah variabel lokal x. Variabel glb bersifat global karena 1. Tidak berada di dalam main atau sub-program, 2. Variabel tersebut dapat diakses pada sub-program manapun, contohnya dapat dipakai untuk ditampilkan pada sub-program tambah(). Sedangkan x bersifat lokal karena hanya dapat diakses pada sub-program tambah() dan tidak dapat diakses pada sub-program yang lain, jika "memaksa" ingin menampilkan nilai x pada main() seperti ini.int main()
{
tambah();
printf("nilai x = %d", x);
return 0;
}
maka program tersebut akan error: 'x' undeclared (first use in this function).
Lalu, gimana caranya kita "bermain" dengan konsep Scope ini? Caranya adalah dengan menggunakan pointer. Perhatikan kode berikut.
#include <stdio.h>
void tukar(int x, int y)
{
int temp = x;
x = y;
y = temp;
}
int main()
{
int a = 5;
int b = 7;
printf("a = %d\n", a);
printf("b = %d\n", b);
tukar(a, b);
printf("..Setelah penukaran..\n");
printf("a = %d\n", a);
printf("b = %d\n", b);
}
Program tersebut menukarkan angka pada variabel a dan b, tapi penukaran tidak terjadi, karena fungsi penukaran hanya bersifat lokal pada sub-program tukar().
Tapi, jika kodenya kita ubah sedikit tanpa menggunakan sub-program seperti ini.
#include <stdio.h>
int main()
{
int a = 5;
int b = 7;
printf("a = %d\n", a);
printf("b = %d\n", b);
int temp = a;
a = b;
b = temp;
printf("..Setelah penukaran..\n");
printf("a = %d\n", a);
printf("b = %d\n", b);
}
maka penukaran pun terjadi.
Supaya kita dapat membuat fungsi penukaran yang dapat digunakan pada fungsi yang lain(dalam kasus ini main()), maka kita dapat menggunakan pointer seperti ini.
#include <stdio.h>
void tukar(int* x, int* y)
{
int temp = *x;
*x = *y;
*y = temp;
}
int main()
{
int a = 5;
int b = 7;
printf("a = %d\n", a);
printf("b = %d\n", b);
tukar(&a, &b);
printf("..Setelah penukaran..\n");
printf("a = %d\n", a);
printf("b = %d\n", b);
}
Magic happens! penukaran pun terjadi.
Itu dapat terjadi karena kita bukan menaruh nilai variabel a dan b pada parameter fungsi tukar(), tapi kita menaruh alamat memori variabel a dan b. Lalu nilai pada alamat memori a dan b tersebut akan di-load pada main().
Here is our conclusion in picture!
0 Response to "Konsep Scope pada Pemrograman C"
Post a Comment