GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Pemrograman Linux C Bagian 10 - Lingkup Variabel

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 kali

Jadi 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
  1. Tutorial Pemrograman C 4 - Variabel dan Memori

  2. Tutorial Pemrograman C Bagian 3 - Dasar-dasar Variabel

  3. Tutorial Pemrograman Linux C Bagian 15 - Pelengkap 2s dan Angka Negatif

  1. Tutorial Kali Linux Burp Suite

  2. Tutorial Pemrograman Linux C Bagian 18:Fungsi rekursif

  3. Praktik Pengkodean Terbaik untuk Pemrograman Sistem Linux dalam Bahasa C – Bagian 1

  1. Tutorial Pemrograman C Bagian 5 - Variabel karakter

  2. Tutorial Pemrograman Linux C Bagian 9 :String

  3. Tutorial Pemrograman Linux C Bagian 8 - Call by Value Vs Call by Pointer/Alamat