Jika Anda mengikuti seri tutorial pemrograman C kami, Anda harus mengetahui konsep variabel. Sementara kita telah membahas dasar-dasar variabel, ada aspek penting lain yang terkait dengan variabel yang akan kita diskusikan di sini:lingkup variabel .
Mari kita mulai dengan menukar kode nilai yang kita gunakan di salah satu tutorial sebelumnya:
#include
void swap (int val1, int val2)
{
int temp =0;
temp =val1;
val1 =val2;
val2 =temp;
printf("\nNilai yang ditukar adalah:%d dan %d", val1,val2);
}
int main()
{
int a=0, b=0;
printf("Masukkan dua bilangan bulat nilai\n");
scanf("%d %d",&a,&b);
printf("Nilai yang dimasukkan adalah:%d dan %d", a,b);
swap(a,b);
return 0;
}
Di sini, di bagian kode ini, variabel 'val1' dan 'val2' memiliki cakupan lokal, yang berarti mereka hidup ketika fungsi 'swap' dipanggil dan mereka mati segera setelah panggilan ke 'swap' selesai. Anda hanya tidak dapat mengakses 'val1' dan 'val2' sebelum atau sesudah panggilan ke fungsi 'swap'. Demikian pula, ruang lingkup variabel 'a' dan 'b' juga lokal - lokal untuk berfungsi 'utama'.
Perhatikan bahwa variabel lingkup lokal ini juga dikenal sebagai variabel otomatis.
Sekarang, sementara variabel dengan cakupan lokal terbatas pada blok di mana mereka dideklarasikan, ada jenis variabel lain yang cakupannya global. Seperti namanya, variabel lingkup global dapat digunakan di seluruh fungsi. Misalnya, variabel 'var' adalah variabel integer global, dan dapat digunakan di kedua fungsi 'main' dan 'swap'.
#include
int var;
void swap (int val1, int val2)
{
int temp =0;
temp =val1;
val1 =val2;
val2 =temp;
printf("\nNilai yang ditukar adalah:%d dan % d", val1,val2);
}
int main()
{
int a=0, b=0;
printf("Masukkan dua nilai bilangan bulat\n");
scanf("%d %d",&a,&b);
printf(" Nilai yang dimasukkan adalah:%d dan %d", a,b);
swap(a,b);
return 0;
}
Secara default, nilai '0' ditetapkan ke variabel global. Tapi itu tidak terjadi dengan variabel lokal - Anda perlu memberikan nilai kepada mereka ketika mereka didefinisikan, jika tidak mereka memegang nilai sampah. Misalnya, dalam program berikut:
#include
int var;
int main()
{
int a;
printf("Variabel lokal 'a' saat ini memegang:%d", a);
printf("\n Variabel global var saat ini memegang:%d", var);
return 0;
}
Ada kemungkinan besar Anda akan mendapatkan nilai bukan nol untuk 'a'. 'var' di sisi lain, akan selalu nol di awal.
Selanjutnya, bisakah ada variabel global dan lokal dengan nama yang sama? Nah, jawabannya adalah ya. Ok, lalu apa yang akan dihasilkan potongan kode berikut di output:
#include
int var =5;
int main()
{
int var =10;
printf("Variabel lokal 'a' saat ini memegang:%d", var);
printf("\n Variabel global var saat ini memegang:%d", var);
return 0;
}
Nah, outputnya akan menjadi '10' dalam kedua kasus. Alasannya, variabel lokal 'var' akan menimpa 'var' global. Jadi sekarang pertanyaan logis berikutnya adalah, bagaimana cara mengakses 'var' global di dalam 'main' dalam kasus ini? Sayangnya, jawabannya TIDAK. Sebenarnya, Anda harus menghindari situasi seperti ini saat bekerja dengan bahasa C.
Berikutnya adalah konsep variabel 'eksternal'. Dalam istilah awam, dengan menggunakan kata kunci 'extern' dengan deklarasi variabel apa pun, Anda memberi tahu kompiler bahwa variabel ini sudah dideklarasikan/didefinisikan di tempat lain dan kami hanya menggunakannya di sini. Misalnya, pada bagian kode berikut, kompilator tidak mengetahui bahwa 'var' ada ketika mencoba mengkompilasi pernyataan printf di dalam fungsi utama.
#include
int main()
{
printf("\n Variabel global var saat ini memegang:%d", var);
return 0;
}
int var =5;
Itu sebabnya Anda mendapatkan kesalahan seperti berikut selama kompilasi:
main.c:Dalam fungsi 'main':
main.c:14:58:error:'var' undeclared (penggunaan pertama dalam fungsi ini)
printf("\n Variabel global var saat ini memegang:%d", var);
^
main.c:14:58:catatan:setiap pengenal yang tidak dideklarasikan dilaporkan hanya sekali untuk setiap fungsi yang muncul di
Tetapi jika Anda mendeklarasikan 'var' sebagai extern di sini, Anda akan melihat semuanya berfungsi dengan baik. Itu karena kompiler akhirnya sampai ke deklarasi 'var' asli.
#include
int main()
{
extern int var;
printf("\n Variabel global var saat ini memegang:%d", var);
return 0;
}
int var =5;
Dan Anda mendapatkan hasil yang benar:
Variabel global var saat ini berlaku:5
Jadi beginilah cara kerja eksternal. Variabel eksternal sering digunakan ketika program/proyek Anda dipecah menjadi beberapa file kode sumber dan Anda ingin, misalnya, menggunakan 'file1', variabel yang didefinisikan dalam 'file2'.
Dan akhirnya, saat kita membahas cakupan variabel, akan lebih baik jika kita juga membahas variabel 'statis' di sini. Variabel statis istimewa dalam arti mereka mempertahankan nilainya bahkan setelah keluar dari ruang lingkup. Ini berarti mereka diinisialisasi hanya sekali, yaitu pertama kali.
penghitung int statis
Berikut adalah potongan kode yang menggunakan variabel statis untuk menghitung berapa kali suatu fungsi dipanggil.
#include
int swap (int val1, int val2)
{
static int counter =1;
int temp =0;
temp =val1;
val1 =val2;
val2 =temp;
printf("\n Fungsi dipanggil %d kali\n" , penghitung);
penghitung++;
}
int main()
{
int a=9, b=4;
swap(a,b);
swap(a,b);
swap(a,b);
return 0;
}Berikut outputnya:
Fungsi dipanggil 1 kali
Fungsi dipanggil 2 kali
Fungsi dipanggil 3 kaliJadi Anda bisa lihat, variabel 'penghitung' mempertahankan nilainya bahkan setelah keluar dari ruang lingkup. Sama seperti variabel global, variabel statis juga memiliki nilai default '0'.
Dalam tutorial ini, kita membahas beberapa konsep penting, semuanya terkait dengan ruang lingkup variabel dalam bahasa pemrograman C. Jangan lupa untuk membuat program Anda sendiri untuk lebih memahami perbedaan antara variabel eksternal, statis, global, dan lokal. Dan seperti biasa, jika ada keraguan atau pertanyaan, berikan komentar di bawah.
Linux