Con trỏ - Bài 5 : Hàm trả về địa chỉ của biến bộ nhớ (Phần 1)

- 2 cách cài đặt hàm tìm phần tử có giá trị tuyệt đối nhỏ nhất trong mảng 1 chiều gồm n số thực kiểu float

int indexMinAbs(float a[], int n)
{
int i = 1, idx = 0;
while(i < n)
{
if(fabs(a[i]) < fabs(a[idx]))
{
idx = i;
}
i++;
}
return idx;
}

float *pointerMinAbs(float a[], int n)
{
int i = 1, idx = 0;
while(i < n)
{
if(fabs(a[i]) < fabs(a[idx]))
{
idx = i;
}
i++;
}
return &a[idx];
}
- Địa chỉ của phần tử tìm được là &a[idx] được trả về thay vì là chỉ số của mảng idx

int main()
{
float B[] = {-9, 12.7F, 2.3F, 11, -10, -3.6F};
int n = sizeof(B)/sizeof(B[0]);
int id = indexMinAbs(B, n);
float* pMin = pointerMinAbs(B, n);
printf("Values: %f %f\n", B[id], *pMin);
printf("Memory Adresses: 0x%x 0x%x", &B[id], pMin);

getch();
return 0;
}
- Chương trình chính minh họa cho việc gọi thử 2 hàm indexMinAbs() và pointerMinAbs(). Khi chạy chương trình ta sẽ thấy B[id] và *pMin in tra cùng giá trị, hơn nữa các địa chỉ bộ nhớ &B[id] và pMin cũng in ra cùng giá trị.

Nhận xét