Hàm Nó Như Thế Này!
#include <stdlib.h>
void *realloc(void *ptr, size_t size);
Ví dụ Lúc Đầu mình khai báo *p và cấp Phát cho nó và gán tất cả =0
int *p=0;
p=(int*)calloc(sizeof(int),10);
Xong Mình Dùng Realloc cấp thêm 2 cái nữa.
Khi Mình Dùng như thế nào thì đúng. Không bị thây đổi dữ liệu (tức 10pt=0 và thêm 2 cái chưa gán giá trị nữa)
realloc(&p,2*sizeof(int));
Output:
0
0
0
0
0
0
0
0
0
0
1(Mới cấp phát thêm và gán =1)
1(Mới cấp phát thêm và gán =1)
Còn Khi Mình Làm như thế này thì lại bị biến đổi giá trị của mấy ptử đầu.
p=(int*)realloc(p,2*sizeof(int));
Output:
0
0
596961664 (Bị Thây Đổi)
40123(Bị Thây Đổi)
134952(Bị Thây Đổi)
131264(Bị Thây Đổi)
0
0
0
0
1 (Mới cấp phát thêm và gán =1)
1 (Mới cấp phát thêm và gán =1)
không biết mình làm sai chỗ nào nhỉ. Cái p=(int*)realloc(p,2*sizeof(int)); thì mình làm giống mẩu. thì lại sai . còn cái realloc(&p,2*sizeof(int)); làm ntn lại đúng ^^ thật khó hiểu.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?