Con trỏ là biến lưu trữ địa chỉ của biến khác.
Xét câu lệnh:
int qty = 179;

Khai báo con trỏ
Cú pháp khai báo con trỏ:
int *p;
'p' là biến con trỏ giữ địa chỉ biến khác.
Khởi tạo con trỏ
Toán tử địa chỉ (&) dùng để khởi tạo con trỏ.
Ví dụ:
int qty = 175; int *p; p = &qty;
Mảng con trỏ
Là tập hợp các địa chỉ (hoặc tập hợp con trỏ).
Khai báo
Khai báo mảng con trỏ:
kiểu_dữ_liệu *tên_con_trỏ [kích_thước];
Ví dụ:
int *p[5];
Biểu diễn mảng con trỏ chứa 5 địa chỉ số nguyên.
Khởi tạo
'&' dùng để khởi tạo.
Ví dụ:
int a[3] = {10,20,30};
int *p[3], i;
for (i = 0; i < 3; i++)
p[i] = &a[i];
// hoặc
p[i] = a + i;
Truy cập
Toán tử gián tiếp (*) dùng để truy cập.
Ví dụ:
for (i = 0; i < 3; i++)
printf("%d", *p[i]);
Chương trình
Chương trình C tính tổng phần tử mảng bằng con trỏ:
// Tinh tong phan tu mang su dung con tro
#include <stdio.h>
#include <malloc.h>
void main(){
int i, n, sum = 0;
int *ptr;
printf("Nhap kich thuoc mang: \n");
scanf("%d", &n);
ptr = (int *) malloc(n * sizeof(int));
printf("Nhap cac phan tu trong danh sach \n");
for (i = 0; i < n; i++){
scanf("%d", ptr + i);
}
// Tinh tong cac phan tu
for (i = 0; i < n; i++){
sum = sum + *(ptr + i);
}
printf("Tong tat ca phan tu mang = %d\n", sum);
return 0;
}
Đầu ra
Kết quả chạy chương trình:
Nhap kich thuoc mang: 5 Nhap cac phan tu: 12 13 14 15 16 Tong tat ca phan tu mang = 70