01/10/2018, 01:07
Thắc mắc về cấp phát động mảng một chiều trong hàm?
Như tiêu đề thì em có đoạn code như sau:
#include <stdio.h>
#include <stdlib.h>
void CapPhat(int **a,int *n)
{
*a = (int *)malloc((*n)*sizeof(int));
}
int main()
{
int *a, n;
printf("
ban muon nhap bao nhieu phan tu : ");
scanf_s("%d", &n);
CapPhat(&a, &n);
free(a);
printf("
");
system("pause");
return 0;
}
Mọi người cho em hỏi dòng này tại sao không phải là:
a = (int *)malloc((*n)*sizeof(int));
Mà lại là:
*a = (int *)malloc((*n)*sizeof(int));
Em cảm ơn.
Bài liên quan
Vì trong tham số truyền vào, bạn đã đẩy con trỏ
a
lên 1 cấp, nên trong hàm đó mỗi khi gọi a phải để thêm 1 dấu*
ở trước nữa, trong trường hợp phức tạp có nhiều toán tử thì ghi :(*a)...