Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Lớp lưu trữ register trong ngôn ngữ C là gì?


Có bốn lớp lưu trữ trong ngôn ngữ C:

  • auto
  • extern
  • static
  • register

Biến register

  • Từ khóa là register.

  • Giá trị biến register được lưu trong thanh ghi CPU, thay vì trong bộ nhớ như biến thông thường.

  • Thanh ghi là đơn vị lưu trữ tạm thời trong CPU.

  • Chúng cho phép thời gian truy cập nhanh hơn cho biến register so với biến thông thường.

Ví dụ 1

Chương trình C sau minh họa lớp lưu trữ register:

#include <stdio.h>
main() {
    register int i;
    for (i=1; i<=5; i++)
        printf("%d ", i);
}

Kết quả

Đầu ra như sau:

1 2 3 4 5

Ví dụ 2

Xét chương trình C khác cho lớp lưu trữ register:

#include <stdio.h>
int main() {
    register int a;
    printf("%d", a); // in giá trị mặc định của a = 0
}

Kết quả

Đầu ra như sau:

0

Ví dụ 3

Chương trình C thứ ba cho lớp lưu trữ static (lưu ý: ví dụ này thực tế minh họa lỗi khi lấy địa chỉ biến register):

#include <stdio.h>
int main() {
    register int i = 10;
    int *p;
    // int *p = &i; // lỗi xảy ra, ở đây ta cố gắng yêu cầu địa chỉ của biến register
    printf("Gia tri cua i: %d", *p);
    printf("Dia chi cua i: %u", p);
}

Kết quả

Đầu ra như sau:

Lỗi: add of reg var?