Quy tắc phạm vi trong C là một vùng của chương trình mà một biến được xác định là có sự tồn tại và ngoài biến đó ra thì các biến khác đều không được truy cập. Có ba nơi mà các biến có thể được khai báo bằng ngôn ngữ lập trình C đó là:
Bên ngoài tất cả các hàm được gọi là biến toàn cục.
Trong định nghĩa các tham số hàm được gọi là các tham số chính thức.
Hãy cùng tìm hiểu về các biến cục bộ và toàn cục cũng như các thông số chính thức là gì nhé!
Các biến được khai báo bên trong một hàm hoặc khối được gọi là biến cục bộ. Chúng chỉ có thể được sử dụng bởi các câu lệnh bên trong hàm đó hoặc khối code. Các biến cục bộ không được biết đến với các hàm bên ngoài của chúng. Ví dụ sau cho thấy các biến cục bộ được sử dụng như thế nào. Ở đây tất cả các biến a, b và c là hàm cục bộ của hàm main ().
#include
int main () {
/* local variable declaration */
int a, b;
int c;
/* actual initialization */
a = 10;
b = 20;
c = a + b;
printf ("value of a = %d, b = %d and c = %d\n", a, b, c);
return 0;
}
Các biến toàn cục bên ngoài một hàm, thường là trên đầu chương trình. Biến toàn cầu giữ giá trị của chúng trong suốt thời gian tồn tại của chương trình và chúng có thể được truy cập bên trong bất kỳ hàm nào được định nghĩa cho chương trình.
Một biến toàn cục có thể được truy cập bởi bất kỳ hàm nào ví dụ như một biến cục bộ có sẵn được sử dụng trong toàn bộ chương trình của bạn sau khi nó được khai báo. Chương trình sau đây cho thấy các biến toàn cục được sử dụng như thế nào trong một chương trình:
#include
/* global variable declaration */
int g;
int main () {
/* local variable declaration */
int a, b;
/* actual initialization */
a = 10;
b = 20;
g = a + b;
printf ("value of a = %d, b = %d and g = %d\n", a, b, g);
return 0;
}
Một chương trình có thể có cùng tên cho các biến cục bộ và toàn cục nhưng giá trị của biến cục bộ bên trong một hàm sẽ được ưu tiên. Đây là một ví dụ:
#include
/* global variable declaration */
int g = 20;
int main () {
/* local variable declaration */
int g = 10;
printf ("value of g = %d\n", g);
return 0;
}
Khi mã trên được biên dịch và thực hiện, nó tạo ra kết quả sau:
value of g = 10
Các tham số chính thức, được coi là các biến cục bộ có trong một hàm và chúng được ưu tiên hơn các biến toàn cục. Sau đây là một ví dụ:
#include
/* global variable declaration */
int a = 20;
int main () {
/* local variable declaration in main function */
int a = 10;
int b = 20;
int c = 0;
printf ("value of a in main() = %d\n", a);
c = sum( a, b);
printf ("value of c in main() = %d\n", c);
return 0;
}
/* function to add two integers */
int sum(int a, int b) {
printf ("value of a in sum() = %d\n", a);
printf ("value of b in sum() = %d\n", b);
return a + b;
}
Khi mã trên được biên dịch và thực hiện, nó tạo ra kết quả sau:
value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30
Khi một biến cục bộ được định nghĩa, nó chưa được khởi tạo trong hệ thống, bạn phải tự khởi tạo nó. Các biến toàn cục được khởi tạo tự động bởi hệ thống khi bạn định nghĩa chúng như sau:
Loại dữ liệu |
Giá trị mặc định ban đầu |
int |
0 |
char |
'\ 0' |
float |
0 |
double |
0 |
pointer |
Null |
Trong các bài tập thực tế lập trình bạn nên khởi tạo các giá trị biến một cách chính xác, nếu không chương trình của bạn có thể gây ra những kết quả không mong muốn.
Kiến thức lập trình C khác bạn nên xem: