Con trỏ trong c là gì?Con trỏ là biến được dùng để chứa địa chỉ vùng nhớ của một biến khác. Nếu một biến chứa địa chỉ của biến khác, thì biến đầu tiên được gọi là con trỏ.
Bạn đang xem: Bài tập về con trỏ trong c
Con trỏ tương hỗ một giải pháp gián tiếp giúp truy vấn tài liệu của biến mà con trỏ đó đang trỏđến .
Con trỏ có thể trỏđến các biến của các kiểu dữ liệu như int, long, float, double, char hoặc dữ liệu kiểu cấu trúc.
Tại sao phải sử dụng con trỏ?
Có thể liệt kêmột số trường hợp mà con trỏ có thểđược sử dụng như : thiết kế xây dựng hàm trả về nhiều hơn một giá trị ; thao tác trên mảngđược thuận tiện hơn bằng cách vận động và di chuyển con trỏ thay vì chuyển dời vị trí của những thành phần .
Tóm Tắt
Con trỏ trong c – Khai báo biến con trỏ
Kiểu_Dữ_Liệu *Tên_Con_Trỏ;Haitoán tử sử dụng với con trỏ trong c làToán tử & và toán tử *
Toán tử &được sử dụngđể trả vềđịa chỉ vùng nhớ của biến
Tên_Biến = &Tên_Con_Trỏ;Toán tử *được sử dụngđể trả về giá trị chứa trong vùng nhớ mà con trỏđang trỏđến.
Tên_Biến = * Tên_Con_Trỏ ; Ví dụ khai báo con trỏ trong c
#include main() { int x; int *px; x = 7; px = &x printf(“%d”, *px); }Kết quả hiển thị trên màn hình là 7.Độc giả quan sát hình bên dướiđể hiểu rõ hơn
Giả sử biến x cóđịa chỉ vùng nhớ là0240FF8C và nội dung chứa bên trong vùng nhớ là 7 (x = 7)
Khi chúng ta thực hiện xử lýpx = &x có nghĩa là gán biến con trỏ px cho vùng nhớ0240FF8C.
Muốn truy cập nội dung bên trong vùng nhớ này, chúng ta sử dụng*px và hiển thị kết quả bằng lệnh printf:printf(“%d”, *px);
Con trỏ trong c –Con trỏ với mảng
Như bạnđọcđã biết, chúng ta truy cập phần tử của mảng thông qua chỉ số theo cú pháp Tên_Mảng và tham khảođịa chỉ của mảng theo cú pháp &Tên_Mảng
Đối với con trỏ cú phápTên_Mảng sẽ là *(Tên_Mảng + Chỉ_Số), cú pháp&Tên_Mảng sẽ là Tên_Mảng + Chỉ_Số
Ví dụ khai báo mảng
int a<> ={3, 2, 9, 100, 7};Truy cập phần tử thứ 3 củamảng
Mảng | Con trỏ |
int x = a<2>; | int x = *(a+2); |
Tham khảođịa chỉ mảng
Mảng | Con trỏ |
scanf(“%d”, &a<2>); | scanf(“%d”, a+2); |
Như vậy khi làm việc với mảng, chúng ta có thể sử dụng một trong hai cách nhưđã trình bàyở trên.
Con trỏ trong c –Con trỏ với chuỗi
Quan sát đoạn chương trình sau
#include main(){ char *welcome = “Chao ban “; char yourname<50>; printf(“Vui long nhap ten ban: “); //Thông báo scanf(“%s”, &yourname); //Nhập tên printf(“%s%s”, welcome, yourname); //Hiển thị }Kết quả
Vui long nhap ten ban: DangChao ban DangGiải thích chương trình
welcome là biến con trỏđược khai báo và khởi tạo bằng câu lệnh char *welcome = “Chao ban” thay vì sử dụng chuỗi charwelcome<10> = “Chao ban”.
Xem thêm: +6 Cách Check Địa Chỉ Ip Của Một Website, Thông Tin Tên Miền Đơn Giản Nhất
Cả hai cáchđều cho cùng hiệu quả, điểm khác biệtởđây khi khai báo chuỗi sử dụng mảng tất cả chúng ta phải chỉđịnh số ký tự cònđối với con trỏ thì không .
Quan sát câu lệnh char yourname<50>; và câu lệnh char *yourname;
Con trỏ trong c –Con trỏ với hàm
Tạo hàm hoán vị 2 số nguyên : Trường hợpkhông sử dụng con trỏ
void hoanvi1(int a, int b){ int t; t = a; a = b; b = t; }Gọi hàm
int a = 1, b = 2; hoanvi1(a, b); printf(“a = %d, b = %d”, a, b);Kết quả hiển thị là 1, 2. Điều đó có nghĩa là giá trị của a và b vẫn giữ nguyên mặc dù bên trong hàm hoanvi1 đã thực hiện thay đổi giá trị.
Trường hợp sử dụng con trỏ
void hoanvi2(int *a, int *b){ int t; t = *a; *a = *b; *b = t; }Gọi hàm
int a = 1, b = 2; hoanvi2(&a, &b); printf(“a = %d, b = %d”, a, b);Kết quả hiển thị: 2, 1. Nghĩa là giá trị của a và bđãđược thayđổi ngay trong bên thân hàm. Điều này có thể đượcgiải thích như sau
Đối với hàm hoanvi1 mặc dù chúng ta thực hiện hoánđổi giá trị cho 2 tham số a,b và đương nhiên giá trị của 2 tham số này sẽ thayđổi, tuy nhiên CHỈ THAYĐỔI BÊN TRONG HÀM, khi kết thúc hàm giá trị của 2 tham số này vẫn giữ nguyên. Vì thực chất bên trong hàm chỉ sử dụng bản sao của biến nên mọi thayđổi bên trong hàm sẽ khôngđược ghi nhận.
Đối với hàm hoanvi2 vì chúng tađang sử dụng con trỏ nên việc thayđổi giá trịđược thực hiện trên bản gốc của biến. Vì vậy giá trị của biến khi bị thay đổi bên trong hàmsẽđược ghi nhận sau khi kết thúc hàm.
Con trỏ trong c –Tổng kết
Con trỏ và khai báo con trỏCon trỏ với mảngCon trỏ với chuỗiCon trỏ với hàm
Con trỏ trong c –Bài tập thực hành
Con trỏ và khai báo con trỏCon trỏ với mảngCon trỏ với chuỗiCon trỏ với hàm
Bài thực hành số 1: Viết chương trình kiểm tra một chuỗi có phải làpalindrome. Một chuỗi được gọi làpalindrome nếu sau khiđảo ngược các ký tự của nó ta vẫn nhậnđược chuỗi như banđầu. Ví dụ chuỗi MADAM.
Bài thực hành số 2: Viết chương trình nhập vào mộttên và đếmsố ký tự là nguyênâm và phụâm.
Xem thêm: “Bỏ Túi” 3 Cách Khôi Phục Dữ Liệu Bị Xóa Trong Thùng Rác Thành Công
Bài thực hành số 3: Viết chương trình tìm phần tử có giá trị nhỏ nhất và lớn nhất trong mảng một chiều.
Source: https://final-blade.com
Category : Kiến thức Internet