Trong hướng dẫn này, bạn sẽ tìm hiểu về mối quan hệ giữa mảng và con trỏ trong lập trình C. Bạn cũng sẽ học cách truy cập các phần tử mảng bằng cách sử dụng con trỏ.
Trước khi bạn tìm hiểu về mối quan hệ giữa mảng và con trỏ, hãy nhớ xem lại 2 vấn đề sau:
Lưu ý rằng, địa chỉ của & x [0] và x là như nhau. Đó là vì tên biến x trỏ đến phần tử đầu tiên của mảng.
Ví dụ 1: Con trỏ và mảng
Trước khi bạn tìm hiểu về mối quan hệ giữa mảng và con trỏ, hãy nhớ xem lại 2 vấn đề sau:
Mối quan hệ giữa Mảng và Con trỏ
Một mảng là một khối dữ liệu tuần tự. Hãy viết một chương trình để in địa chỉ của các phần tử mảng.#include <stdio.h>Kết quả:
int main() {
int x[4];
int i;
for(i = 0; i < 4; ++i) {
printf("&x[%d] = %p\n", i, &x[i]);
}
printf("Address of array x: %p", x);
return 0;
}
&x[0] = 1450734448Có sự khác biệt 4 byte giữa hai phần tử liên tiếp của mảng x. Đó là bởi vì kích thước của int là 4 byte (trên trình biên dịch của chúng tôi).
&x[1] = 1450734452
&x[2] = 1450734456
&x[3] = 1450734460
Address of array x: 1450734448
Lưu ý rằng, địa chỉ của & x [0] và x là như nhau. Đó là vì tên biến x trỏ đến phần tử đầu tiên của mảng.
Ví dụ 1: Con trỏ và mảng
#include <stdio.h>kết quả:
int main() {
int i, x[6], sum = 0;
printf("Enter 6 numbers: ");
for(i = 0; i < 6; ++i) {
scanf("%d", x+i);
sum += *(x+i);
}
printf("Sum = %d", sum);
return 0;
}
Enter 6 numbers: 2Ví dụ 2: Mảng và con trỏ
3
4
4
12
4
Sum = 29
#include <stdio.h>Kết quả:
int main() {
int x[5] = {1, 2, 3, 4, 5};
int* ptr;
// ptr is assigned the address of the third element
ptr = &x[2];
printf("*ptr = %d \n", *ptr); // 3
printf("*(ptr+1) = %d \n", *(ptr+1)); // 4
printf("*(ptr-1) = %d", *(ptr-1)); // 2
return 0;
}
*ptr = 3
*(ptr+1) = 4
*(ptr-1) = 2
Post a Comment
Post a Comment