Chuyển đến nội dung chính

Phân biệt biến Local, Global, Extern, Static và Const

Biến local

– Biến local là xuất hiện trong phạm vi cụ thể.
– Biến local chỉ tồn tại trong hàm mà biến được khai báo
– Đôi khi, biến local được gọi là biến tự động (auto) bởi vì các biến được tự động sinh ra khi hàm được thực hiện và sẽ tự động biến mất khi kết thúc hàm.
– Từ khóa auto được sử dụng để ám chỉ biến cục bộ.
Ví dụ:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
#include <conio.h>
#include <stdio.h>
void Display();
int main()
{
    Display();
    printf("\n i = %d", i); // error
    getch();
}
 
void Display()
{
    int i;
    for(i = 0; i < 10; i++)
        printf("\n %d", i);
}
Kết quả:
Biến local
Biến local
Chương trình này khi build sẽ bị lỗi do, biến i khai báo trong hàm Display(), nên phạm vị hoạt động của biến i chỉ trong hàm Display(). Hàm main() không sử dụng được biến i => gây ra lỗi.

Biến global và extern

– Biến global là biến được khai báo bên ngoài tất cả các hàm và có giá trị với tất cả các hàm trong chương trình. Tức là các hàm trong chương trình có thể sử dụng biến global để tính toán.
– Biến global tồn tại đến khi nào chương trình kết thúc.
– Có thể định nghĩa 1 biến global trong 1 file (.c/.cpp/.h) và truy cập biến này từ 1 file (.c/.cpp/.h) khác. Để làm điều này, biến phải được khai báo ở cả 2 file và từ khóa extern được thêm trong lần khai báo thứ 2.
Ví dụ: Biến toàn cục global
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
#include <conio.h>
#include <stdio.h>
 
int i = 0; // Bien Global
 
void Display();
 
int main()
{
    Display();
    printf("\ni = %d", i);
    getch();
}
void Display()
{
    for(i = 0; i < 3; i++)
        printf("\ni = %d", i);
}
Kết quả:
Biến toàn cục global
Biến toàn cục global

Ví dụ: Biến toàn cục extern
File header1.h
1
2
3
4
5
6
7
#ifndef _HEADER_H_
#define _HEADER_H_
 
extern int X;
void display_x();
 
#endif
File file1.cpp
01
02
03
04
05
06
07
08
09
10
11
#include "header1.h"
#include "conio.h"
 
int X; // khai bao bien global
 
void main()
{
    X = 5;
    display_x();
    getch();
}
File file2.cpp
1
2
3
4
5
6
7
#include "stdio.h"
#include "header1.h"
 
void display_x()
{
    printf("X = %d", X);
}
Kết quả:
Biến Extern
Biến Extern


Biến static

– Biến static có thể là global hoặc local. Cả hai đều được khai báo với từ khóa static đi kèm.
– Biến local static là biến có thể duy trì giá trị từ lần gọi hàm thứ nhất đến các lần gọi hàm tiếp theo. Biến local static tồn tại đến khi chương trình kết thúc.
– Khi tạo 1 biến local static trong hàm, chúng ta nên khởi tạo giá trị cho chúng. Nếu không giá trị biến được gán mặc định bằng 0.
– Biến global static là biến global mà chỉ có thể truy cập từ file (.c/.cpp) mà biến đó được định nghĩa.

Biến const

– Trong ngôn ngữ C, tiền xử lý #define được sử dụng để tạo biến với giá trị là hằng số.
– Trong ngôn ngữ C++, xuất hiện một số vấn đề: khi sử dụng #define, tiền xử lí sẽ nhảy thẳng vào source code và thay thế biến bằng giá trị đã định nghĩa. Vì biến #define chỉ tồn tại bên trong file mà nó được định nghĩa, có thể xảy ra trường hợp định nghĩa tên biến giống nhưng khác về giá trị.
– Định nghĩa biến hằng trong C++, chủng ta nên sử dụng từ khóa const đi kèm.
– Khi sử dụng từ khóa const, phải khởi tạo giá trị ban đầu cho biến.

Nhận xét

Bài đăng phổ biến từ blog này

Entry Test của FPT

IQ - Kiểm tra tư duy logic (8/20) - GMAT- Kiểm tra khả năng tính toán trong thời gian ngắn (8/20) - Tiếng Anh (18-> 25/50) - Các bài thi chuyên môn - FE (8/20) IQ: lên mạng tìm "IQ test" là ra đầy. + GMAT: Những câu trắc nghiệm tính toán đơn giản kiểu như sau:  1 . Một shop thời trang sale off quần jeans 15 %, quần jeans giá 450 $, người mua đưa 500 $, hỏi cashier trả lại bao nhiêu $ tiền thừa.? 2 . 100 % là 180 , vậy 150 là bao nhiêu %? Tiếng anh: Cỡ như thi TOEIC thôi. Chuyên môn: Mobile thì trắc nghiệm Java. Qúa trình tuyển như sau :v Lần 1: Test IQ, Tiếng Anh( mình làm í ẹ khoảng 50% mà vẫn được) , Java Lân 2: được gọi điện lên :)) + Gioi thiệu bản thân + Họ chỉ hỏi các câu căn bản như: -. OOP: là gì, 4 tính chất, ví dụ, khác nhau giữa interface và abstract - CODE: hầu toàn các bài toán vòng for :)) , cẩn thận mấy câu kế thừa. SQL (distinct, view, function, cursor, store procedure, ...v.v.), nhớ có câu cộng 2 số int không dùng biến đệm hơi khoai haha + Nói ch...

Java: Java Package-Thư viện trong Java

Giới thiệu về Package Các bạn mới học lập trình Java thường không dể ý tới package vì các bạn toàn tạo file .java vào cùng 1 chỗ, không cần sắp xếp, không cần quản lý truy nhập. Nhưng để tăng kỹ năng lập trình với Java, các bạn cần phải tìm hiểu về package trong Java. Các bạn có thể tham khảo định nghĩa sau: Package được dùng để đóng gói các lớp trong chương trình lại với nhau thành một khối. Đây là cách tốt nhất để lưu trữ các lớp gần giống nhau hoặc có cùng một module thành một khối thống nhất – để đáp ứng 1 khối chức năng. Từ đây mình sẽ giới thiệu thêm với các bạn các câu lệnh nhâp khẩu,nó có định dạng như sau : Định dạng :  import javaPackageNameImport;    Nó giống như khai báo thư viện ở các ngôn ngữ lập trình khác.Như vậy,chỉ khi các bạn nhập khẩu chúng,các bạn mới có thể sử dụng thư viện mà chúng cung cấp cho ta. VD :    import java.util.Date;   import java.text.SimpleDateFormat; Lưu ý : -Các câu lệnh nhập khẩu rất nhiều và...

Khác nhau giữa Array và ArrayList và HashMap

Collection bản chất là tập các lớp dùng để lưu trữ danh sách và có khả năng tự co giãn khi danh sách thay đổi : Thêm , sửa , xóa , chèn … Hai lớp Collection thường được sử dụng nhiều nhất là ArrayList và Hashmap Giới thiệu về ArrayList ArrayList sử dụng cấu trúc mảng để lưu trữ phần tử , tuy nhiên có hai đặc điểm khác mảng : Không cần khai báo trước kiểu phần tử . Không cần xác định trước số lượng phần tử ( kích thước mảng ). N ó có kh ả năng truy c ậ p ph ầ n t ử ng ẫ u nhiên (Do th ừ a k ế t ừ interface RandomAccess ). P hương thức khởi tạo ● ArrayList () ● ArrayList (Collection c) ● ArrayList ( int initialCapactity ) Các phương thức chính ● add(Object o) ● remove(Object o) ● get( int index) ● size() ● isEmpty () ● contains(Object o) ● clear() Giới thiệu về HashMap ● Là ki ể u t ậ p h ợ p t ừ đ i ể n, HashMap cho phép truy xu ấ t tr ự c ti ế p t ớ i m ộ ...