01/10/2018, 10:51
Hỏi về nhập mảng bằng con trỏ số phần tử nhập trong hàm
các bạn xem cho em phần khai báo hàm với phần nhập bằng lệnh scanf mấy cái đối số sao lạ vậy ạ?
void nhapContro(int *(*a), int *n)
scanf("%d", (*a + i))
#include <stdio.h>
#include <stdlib.h>
void nhapContro(int *(*a), int *n) {
int i;
printf("Nhap so phan tu cua mang: ");
scanf("%d", n); // khong phai &n
*a = (int *) malloc ((*n) * sizeof(int));
// *a : lay dia chi cua mang a chu khong phai gia tri cua a
for (i = 0; i < *n; i++) {
printf("Nhap a[%d] = ", i);
scanf("%d", (*a + i));
}
}
void xuatMang(int *a, int n) {
int i;
for (i = 0; i < n; i++) {
printf ("%d ", a[i]);
}
}
int main() {
int *a, n;
nhapContro(&a, &n); // lay dia chi cua a va n
xuatMang(a, n);
return 0;
}
Bài liên quan
Thứ nhất, int *n là truyền tham trỏ, giá trị của n sẽ thay đổi sau khi ra khỏi hàm. và scanf vẫn cần từ khóa
&
.Thứ 2, truyền con trỏ vào hàm, không cần
*(*a)
.Thứ 3,
scanf("%d", (a+i) )
a là con trỏ,a+i
cho bạn trỏ tới ô nhớ bên cạnh, nó là địa chỉ nên không cần toán tử&
.