Ôn tập: đối số con trỏ hàm
Thuộc phần Logic và luồng điều khiển trong hành trình C của Coddy. Bài học 30 trên 63.
Thử thách
DễViết một chương trình C triển khai hàm tìm cả giá trị nhỏ nhất và lớn nhất trong một mảng bằng cách sử dụng các đối số con trỏ. Chương trình của bạn cần:
- Tạo một hàm có tên
findMinMaxnhận bốn tham số:- Một mảng số nguyên
- Kích thước của mảng
- Một con trỏ đến số nguyên để lưu giá trị nhỏ nhất
- Một con trỏ đến số nguyên để lưu giá trị lớn nhất
- Bên trong hàm
findMinMax, duyệt qua mảng để tìm giá trị nhỏ nhất và lớn nhất - Dùng toán tử giải tham chiếu để lưu giá trị nhỏ nhất tại địa chỉ mà con trỏ min trỏ đến
- Dùng toán tử giải tham chiếu để lưu giá trị lớn nhất tại địa chỉ mà con trỏ max trỏ đến
- Trong hàm
main, đọc một số nguyênnbiểu thị số phần tử trong mảng - Đọc
ngiá trị số nguyên và lưu chúng vào một mảng - Khai báo hai biến số nguyên
minValuevàmaxValueđể lưu kết quả - Gọi hàm
findMinMax, truyền vào mảng, kích thước của mảng và địa chỉ củaminValuevàmaxValue - In kết quả theo định dạng:
Minimum: [value]vàMaximum: [value]
Ví dụ, nếu đầu vào là:
5
12 7 23 4 18Đầu ra của bạn sẽ là:
Minimum: 4
Maximum: 23Thử thách này minh họa kỹ thuật mạnh mẽ sử dụng nhiều đối số con trỏ để trả về nhiều giá trị từ một lần gọi hàm, cho phép hàm thay đổi các biến trong phạm vi của hàm gọi.
Tự làm thử
#include <stdio.h>
// TODO: Viết hàm findMinMax tại đây
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int minValue, maxValue;
// TODO: Gọi hàm findMinMax tại đây
printf("Minimum: %d\n", minValue);
printf("Maximum: %d\n", maxValue);
return 0;
}Tất cả bài học trong Logic và luồng điều khiển
1Nền tảng về con trỏ
Con trỏ là gì?Khai báo con trỏToán tử lấy địa chỉ (&)Toán tử giải tham chiếu (*)Con trỏ NULLÔn tập: kiến thức cơ bản về con trỏ4Dự án: Công cụ xử lý văn bản đơn giản
Tổng quan dự ánĐếm ký tự2Con trỏ và mảng
Tên mảng dưới dạng con trỏPhần tử mảng và con trỏPhép toán con trỏSo sánh con trỏÔn tập: duyệt mảng bằng con trỏ5Con trỏ và hàm
Truyền theo giá trịTruyền con trỏ vào hàmSửa đổi biến qua con trỏVí dụ kinh điển: hoán đổiTruyền mảng vào hàmÔn tập: đối số con trỏ hàm3Mảng ký tự và chuỗi
Chuỗi dưới dạng mảng charKý tự kết thúc nullNhập chuỗi bằng scanfDùng strlen()Dùng strcpy()Dùng strcat()Dùng strcmp()Ôn tập: các hàm xử lý chuỗi cơ bản6Quản lý bộ nhớ
Bộ nhớ ngăn xếp và bộ nhớ heapCấp phát động với malloc()Dùng sizeof() để cấp phátKiểm tra lỗi cấp phátGiải phóng bộ nhớ với free()Cấp phát với calloc()Ôn tập: Mảng động9Dự án: Nhập thông tin liên hệ đơn giản
Định nghĩa struct ContactHàm tạo liên hệTự luyện tập: Trình biên dịch C online