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.

Người bí ẩn viết 03:17 ngày 01/10/2018

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));

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)...

Bài liên quan
0