Bộ nhớ truy cập C
Truy cập bộ nhớ động
Bộ nhớ động hoạt động giống như một mảng, với kiểu dữ liệu được chỉ định bởi kiểu con trỏ.
Giống như mảng, để truy cập một phần tử trong bộ nhớ động, hãy tham khảo số chỉ mục của nó:
ptr[0] = 12;
Bạn cũng có thể hủy đăng ký con trỏ để truy cập phần tử đầu tiên:
*ptr = 12;
Ví dụ
Đọc và ghi vào bộ nhớ động:
// Allocate memory
int *ptr;
ptr = calloc(4, sizeof(*ptr));
//
Write to the memory
*ptr = 2;
ptr[1] = 4;
ptr[2] = 6;
// Read
from the memory
printf("%d\n", *ptr);
printf("%d %d %d", ptr[1], ptr[2],
ptr[3]);
Hãy tự mình thử »Lưu ý về kiểu dữ liệu
Bộ nhớ động không có kiểu dữ liệu riêng mà chỉ là một chuỗi byte. Dữ liệu trong bộ nhớ có thể được hiểu là một loại dựa trên kiểu dữ liệu của con trỏ.
Trong ví dụ này, một con trỏ tới bốn byte có thể được hiểu là một giá trị int
(4 byte) hoặc là một mảng gồm 4 giá trị char
(mỗi giá trị 1 byte).
Ví dụ
int *ptr1 = malloc(4);
char *ptr2 = (char*) ptr1;
ptr1[0] = 1684234849;
printf("%d is %c %c %c %c", *ptr1, ptr2[0], ptr2[1], ptr2[2], ptr2[3]);
Hãy tự mình thử »