01/10/2018, 01:00

Báo lỗi: warning: passing argument 1 of 'calloc' makes integer from pointer without a cast [-Wint-conversion]

Mình có 1 đoạn code sau dù chạy được nhưng bị báo lỗi như tiêu đề, không biết có bạn nào biết lí do hay không?

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

typedef struct {
    float GPA;
    char MSSV[100], Name[100];
} students;

int main(int argc, char** argv) {
    int n;
    students *list = (students* ) calloc (&n, sizeof (students));
    
    printf("Nhap so hoc sinh ban muon quan ly: ");
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
        printf("Nhap MSSV: ");
        fpurge(stdin);
        gets(list[i].MSSV);
        printf("Nhap ten: ");
        fpurge(stdin);
        gets(list[i].Name);
        printf("Nhap GPA: ");
        fpurge(stdin);
        scanf("%f", &list[i].GPA);
    }
    for (int i = 1; i <= n; i++) {
        printf("MSSV: %s
", list[i].MSSV);
        printf("Name: %s
", list[i].Name);
        printf("GPA: %f
", list[i].GPA);
        printf("---------------------------
");
    }
    return (EXIT_SUCCESS);
}
Pham Van Hai viết 03:02 ngày 01/10/2018

students list = (students ) calloc (&n, sizeof (students));

Do bạn truyền địa chỉ của n vào nên lỗi, hàm này chỉ nhận 2 tham số kiểu số nguyên.
Sử lại ...calloc(n, ...)

Bạn tham khảo lại cách sử dụng hàm calloc ở đây
http://www.cplusplus.com/reference/cstdlib/calloc/

Bài liên quan
0