Call by reference

mình có 1 list với pointer next và prev. Giờ mình viết 1 function pop để xóa member đầu tiên của list

void pop(struct studenten *student){
    student=student->next;
    free(student->prev);
    student->pre=NULL;
}

nhưng mà nó lại ko hoạt động, con trỏ student của mình vẫn giữ nguyên. Mình thử với function trả về kiểu con trỏ thì lại hoạt động

struct studenten *pop(struct studenten *student){
     student->next->prev=NULL
     return student->next;
}

student=pop(student);

Vì C mặc định truyền tham trị mà :smiley: nên student không đổi.

Nhưng return con trỏ cũng chưa ổn vì pop theo mô tả là trả về hẳn info.

1 Like

đúng là pop return cái bị xóa về. Mà có cách nào khác ko bạn?
mình ko muốn dùng global variable lắm

Vậy thì thêm một sao nữa **student. Do truyền tham biến phải thông qua con trỏ.

1 Like

Hình như bạn dùng cái struct của Node để làm List luôn thì phải

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?