Giới thiệu con trỏ và mảng con trỏ trong C


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ữ.

Vì lúc này con trỏ p đã trỏ đến và quản lý biến a. Nên khi thay đổi giá trị của con trỏ p thì a cũng thay đổi theo.
#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

Đăng nhận xét

0 Nhận xét