01/10/2018, 11:38

Không hiểu 1 số hàm với hàm qsort

mình đang tìm hiểu về qsort thì ko hiểu cái hàm cmpfunc và cách nó trả về
const void là sao
hơn nữa khi nhập số vào thì nó cứ có số 25 chèn vào ?
ví dụ mình nhập : 5 2 3
thì kết quả cho ra là 5 25 3 ??
có ai hộ mình với

#include <stdio.h>
#include <stdlib.h>

int cmpfunc (const void * a, const void * b)
{
     return ( *(int*)a - *(int*)b );
}

int main()
{
    int a[3];
    scanf("%d %d %d", &a[1],&a[2],&a[3]);
    qsort(a, 3, sizeof(int), cmpfunc);
    printf("%d %d %d", a[1],a[2],a[3]);
    
    
    return 0;
    

}
HK boy viết 13:52 ngày 01/10/2018

int a[3];
scanf("%d %d %d", &a[1],&a[2],&a[3]);

Nếu bạn để chỉ số bắt đầu từ 1 thì phải khai báo a[4] chứ không phải là a[3].

Nam Phan viết 13:41 ngày 01/10/2018

bạn có thể giảng cho mình về hàm cmpfunc đc ko ạ ?
hay có cách nào ko sử dụng con trỏ không ?

HK boy viết 13:38 ngày 01/10/2018

hàm cmpfunc

So sánh giá trị của 2 phần tử trong dãy int a[].

Để giải thích 1 cách cụ thể thì mình thấy là hơi khó, vì mình không code con trỏ.

Bạn xem link này thử xem:

GeeksforGeeks – 25 Mar 13

Comparator function of qsort() in C - GeeksforGeeks

Standard C library provides qsort() that can be used for sorting an array. As the name suggests, the function uses QuickSort algorithm to sort the… Read More »

nghia viết 13:39 ngày 01/10/2018

Chào sockyone!
Bạn cần tìm hiểu các các kiến thức sau:

  1. Bạn cần tìm hiểu void* là gì? (con trỏ void)
  2. Tìm hiều về hằng con trỏ(* const ) và con trỏ hằng(const *).
    Nếu bạn muốn học lập trình C/C++ cho nhúng thì mình khuyên bạn nên tìm hiểu sâu nếu muốn biết cho chơi thì thôi. Xin bạn dừng lại nó là 1 định nghĩa của sự nhức đầu! Nếu có gì sai mong mọi người thông cảm cho em!
Bài liên quan
0