Aturan Penggunaan Scope Bahasa C dan Fungsinya
- /* filename: file1.c */ int a; int main(void) {a = 2;}
- /* filename: file2.c */ /* Ketika file terhubung dengan file1.c, */ /* maka fungsi dari file tersebut dapat diakses oleh a */ extern int a; int myfun() {a = 2;}
Jika Inner block Memiliki Penamaan yang Sama dengan Nama Block
Jika inner block mendeklarasikan sebuah variabel dengan nama yang sama sebagai nama deklarasi variabel oleh block outer, maka visibilitas dari block outer berakhir pada } deklarasi inner block./* Aturan Scope pada Bahasa C */
#include<stdio.h>
int main()
{
{
int x = 10, y = 20;
{
// Blok terluar mengandung
// deklarasi dari x dan y,
// sehingga statement yang
// mengikutinya bernilai valid
// dan mencetak nilai 10 dan 20
printf("x = %d, y = %d\n", x, y);
{
// variabel y dideklarasikan
// ulang, sehingga blok terluar y
// tidak dapat diakses di dalam
// blok atau scope
int y = 40;
x++; // Mengubah variabel blok
// luar x dengan nilai 11
y++; // Mengubah nilai variabel y
// pada blok ini menjadi 41
printf("x = %d, y = %d\n", x, y);
}
// Statement ini hanya mengakses
// variabel blok terluar
printf("x = %d, y = %d\n", x, y);
}
}
return 0;
}
x = 11, y = 41
x = 11, y = 20
Jika Fungsi dan Parameter Diteruskan ke Fungsi
Sebuah fungsi adalah merupakan sebuah block. Parameter dan variabel lokal lainnya dari sebuah fungsi mengikuti aturan scope pada block yang sama.Variabel dari Block Diakses dalam Block Subsequent Lainnya
Jawabannya tidak dapat, sebuah deklarasi variabel dalam sebuah block dapat diakses di dalam block dan semua inner block dari block itu sendiri. Contohnya, perhatikan program yang menghasilkan compiler error berikut ini./* Aturan Scope pada bahasa C */
int main()
{
{int x = 10;}
{printf("%d", x); // Error: variabel
// x tidak dapat diakses pada blok ini
}
return 0;
}
prog.c:8:15: error: 'x' undeclared (first use in this function)
printf("%d", x); // Error: x is not accessible here
^
prog.c:8:15: note: each undeclared identifier is
reported only once for each function it appears in
Latihan, perkirakan hasil keluaran atau output program berikut ini.
/* Aturan Scope pada Bahasa C */
#include<stdio.h>
int main()
{
int x=1,y=2,z=3;
printf(" x = %d, y = %d, z ="
" %d \n", x, y, z);
{
int x = 10;
float y = 20;
printf(" x = %d, y = %f, z ="
" %d \n", x, y, z);
{
int z = 100;
printf(" x = %d, y = %f, z ="
" %d \n", x, y, z);
}
}
return 0;
}
x = 10, y = 20.000000, z = 3
x = 10, y = 20.000000, z = 100
Aturan Dasar Scope
int main() {
// Deklarasi variabel lokal
int angka;
return 0;
}
int main() {
int x;
if (1) {
int x; // Kesalahan, nama
// variabel x sudah digunakan
}
return 0;
}
Aturan Tentang Block Scope
int main() {
int a = 5;
if (a > 0) {
// Variabel b hanya
// dapat diakses di dalam
// blok ini
int b = 10;
}
// b tidak dapat diakses
// di sini
return 0;
}
for (int i = 0; i < 5; i++)
{
// Variabel i hanya dapat
// diakses di dalam loop ini
}
// i tidak dapat diakses
// di sini
Aturan Tentang Function Scope
void fungsi(int x) {
// Variabel x hanya dapat
// diakses di dalam fungsi
// ini
}
// x tidak dapat diakses
// di sini
int fungsi() {
// Variabel lokal hanya dapat
// diakses di dalam fungsi ini
int y = 20;
return 0;
}
// y tidak dapat diakses
// di sini
Aturan Penggunaan Variabel Global
// Variabel global
int globalVar = 10;
int main() {
// Variabel global dapat
// diakses di dalam fungsi
// main
printf("Nilai variabel global: %d\n", globalVar);
return 0;
}
Aturan Penggunaan Static dalam Scope
int fungsi() {
// Variabel static tetap
// ada di memori
static int counter = 0;
counter++;
return counter;
}
Aturan Penggunaan Nested Scope
int main() {
int a = 5;
if (a > 0) {
// Variabel a dapat diakses
// di dalam blok ini
int b = 10;
}
// Variabel b tidak dapat
// diakses di sini
return 0;
}
Kesimpulan
- Membuat Nilai Variabel Beku Menggunakan Konstanta Bahasa C
- Variabel Tidak Diawali Angka pada Bahasa C dan Alasannya
- Variabel Static dan Global Bahasa C Beserta Fungsinya
- Tipe Data Umum Bahasa C yang Biasa Digunakan
- Variabel Dua Pilihan pada Bahasa C Menggunakan Bool
- Integer Promotion Bahasa C dan Fungsinya
- Perbandingan Nilai Float Bahasa C Terhadap Nilai Lainnya
6 komentar untuk "Aturan Penggunaan Scope Bahasa C dan Fungsinya"
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 -
Apa yang dimaksud dengan variabel lokal?
BalasHapusVariabel lokal hanya dapat diakses pada Scope itu sendiri atau pada fungsi itu sendiri. Jika ada akses lain dari luar Scope atau fungsi maka akan bernilai invalid.
HapusVariabel lokal dibuat ketika kontrok mencapai suatu Scope atau fungsi yang mengandung variabel lokan dan kemudian dihilangkan setelah keluar dari Scope atau fungsi tersebut.
Apa yang dimaksud dengan variabel global.
BalasHapusKebalikan dari variabel lokal, variabel global membuat isi dari Scope atau fungsi dapat diakses dari luar Scope atau fungsi itu sendiri dan tidak akan menyebabkan error atau invalid pada program.
HapusSecara sederhana, bagaimana aturan Scope membatasi akses pada bahasa pemrograman?
BalasHapusAturan Scope menentukan bagian mana dari suatu program atau item data yang dapat mengakses pada Scope yang telah dibatasi atau telah ditentukan.
Hapus