সি ভ্যারিয়েবল স্কোপ

ভ্যারিয়েবল স্কোপ

কোনো ভ্যারিয়েবল ডিক্লেয়ার করার পরে যে সীমার মধ্যে তা ব্যবহার করা যায়, তাকে ঐ ভ্যারিয়বলের স্কোপ বলে । 

কোনো ভ্যারিয়েবলকে তার স্কোপের বাইরে ব্যবহার করতে চাইলে প্রোগ্রাম এ কম্পাইলের সময় একটি এরর দেয় ।  নিচের কোডটি লক্ষ্য করোঃ

1#include <stdio.h>
2
3void myFunction(){
4    printf("Value of x: %d", x);
5}
6
7int main(){
8    int x = 10;
9    myFunction();
10    return 0;
11}
12

এখানে লাইন ৮ এ যে ভ্যারিয়েবল ডিক্লেয়ার করা হয়েছে, তা একটি লোকাল স্কোপ ভ্যারিয়েবল । অর্থাৎ, যেই ফাংশনের মধ্যে ডিক্লেয়ার করা হয়েছে কেবলমাত্র সেই ফাংশনের মধ্যে ভ্যারিয়েবলটি অ্যাক্সেস করা যাবে । তাই আমরা ফাংশনের বাইরে কে অ্যাক্সেস করতে পারবো না । কিন্তু যদি আমরা কে গ্লোবাল স্কোপ এ ডিক্লেয়ার করি, তখন এই ফাংশনটি কম্পাইল হবে । 

1#include <stdio.h>
2
3int x = 10; // this one is global scope variable
4
5void myFunction(){
6    printf("Value of x: %d", x);
7}
8
9int main(){
10    myFunction();
11    return 0;
12}
13

এবার প্রোগ্রামটি ঠিকঠাক কাজ করবে । কারণ এখানে গ্লোবাল স্কোপ এ ডিক্লেয়ার করা হয়েছে । তাই সকল ফাংশন থেকে একে ব্যবহার করা যাবে । 

একই নামের গ্লোবাল এবং লোকাল ভ্যারিয়েবল ব্যবহার করা হলে কী হবে?

1#include <stdio.h>
2
3int x = 10; // this one is global scope variable
4
5void myFunction(){
6    int x = 5;
7    printf("Value of x from myFunction: %d\n", x);
8}
9
10int main(){
11    printf("Value of x from main: %d\n", x);
12    myFunction();
13    return 0;
14}
15
Value of x from main: 10
Value of x from myFunction: 5

এখানে, এর লোকাল স্কোপ এ কোনো নামের ভ্যারিয়েবল নেই । তাই যখন কে ব্যবহার করার চেষ্টা করা হয়েছে, সেটি গ্লোবাল কে ব্যবহার করেছে । অপরদিকে, এর ভেতরে একটি লোকাল আছে, তাই সেটি গ্লোবাল ভ্যারিয়েবলটি ব্যবহার না করে লোকাল টিকে ব্যবহার করেছে । 

কনফিউশন এড়াতে, একই নামের গ্লোবাল ও লোকাল ভ্যারিয়েবল ব্যবহার উচিত নয় । 

Logo

PyxLearn

Quick Links

আমাদের মেসেজ পাঠাতে চাও?