1. Khái niệm con trỏ:
Con trỏ dùng để lưu địa chỉ của một biến nào đó.
1.2. Khai báo và gán giá trị con trỏ:
a) Khai báo
#include <stdio.h>
int main(){
int *p; //Khai báo một con trỏ kiểu int
}
b) Gán giá trị con trỏ
Ta khởi tạo thêm biến a có kiểu int giá trị là 100.
#include <stdio.h>
int main(){
int a = 100;
int *p;
p = &a; //Cho con trỏ p trỏ đến địa chỉ a
// Dấu &a là toán tử lấy địa chỉ của a gán cho con trỏ p. Lúc này giá trị, địa chỉ của biến a và con trỏ p là giống nhau.
printf("Dia chi cua a: %d", &a);
printf("\nDia chi cua con tro p: %d", p);
printf("\nGia tri cua a: %d", a);
printf("\nGia tri cua con tro p: %d", *p); //*p lúc này để giải tham chiếu lấy ra giá trị của con trỏ p đang lưu.
}
Dia chi cua a: 1945717116 Dia chi cua con tro p: 1945717116 Gia tricua a: 10 Gia tri cua con tro p: 10
* LƯU Ý:
+ Dấu & là toán tử địa chỉ để lấy ra địa chỉ của biến đó.
+ dấu *p ở print lúc này đóng vai trò truy cập vào địa chỉ ô nhớ đó lấy ra giá trị mà con trỏ đang nắm giữ.
#include <stdio.h>
int main(){
int a = 100;
int *p;
p = &a; //Cho con trỏ p trỏ đến địa chỉ a
// Dấu &a là toán tử lấy địa chỉ của a gán cho con trỏ p. Lúc này giá trị, địa chỉ của biến a và con trỏ p là giống nhau.
printf("Dia chi cua a: %d", &a);
printf("\nDia chi cua con tro p: %d", p);
printf("Gia tricua a: %d", a);
printf("\nGia tri cua con tro p: %d", *p); //*p lúc này để giải tham chiếu lấy ra giá trị của con trỏ p đang lưu.
*p = 200; //Truy cập vào giá trị mà địa chỉ của con trỏ p đang giữ và thay đổi nó
printf("\nGia tri cua a sau thay doi: %d", a);
printf("\nGia tri cua con tro p sau thay doi: %d", *p); //*p lúc này để giải tham chiếu lấy ra giá trị của con trỏ p đang lưu.
}
Dia chi cua a: 1945717116 Dia chi cua con tro p: 1945717116 Gia tri cua a: 10 Gia tri cua con tro p: 10 Gia tri cua a sau thay doi: 200 Gia tri cua con tro p sau thay doi: 200
2. Mảng con trỏ
#include <stdio.h>
#pragma warning(disable:4996)
void nhapMang(int*& a, int n) {
for (int i = 0; i < n; i++){
printf("a[%d]: ", i);
scanf("%d", &a[i]);
}
}
void xuatMang(int* a, int n) {
for (int i = 0; i < n; i++){
printf("%d ", a[i]);
}
}
int main() {
int* a = new int[100];
int n = 5;
nhapMang(a, n);
xuatMang(a, n);
}
a[0]: 1 a[1]: 3 a[2]: 4 a[3]: 5 a[4]: 3 1 3 4 5 3
0 Nhận xét