theo Head First C khi pass array as a parameter, thứ function nhận được là một pointer point đến array đó, và các thao tác với pointer đó cũng sẽ tác động lên array nó point tới (hình như là vậy). và theo code mẫu e xem thì khi khai báo nó chỉ là int array[]
e code một bài làm việc với array’s pointer như này :
#include <stdio.h>
#include <stdlib.h>
void insert_array(int n,int arr[])
{
for(int i = 0; i < n ; ++i)
{
printf("A[%i]:",i); scanf("%i",arr[i]);
}
}
int main(int argc, char const *argv[])
{
int thuc_hanh[100];
int do_dai = 0;
scanf("%i",&do_dai);
insert_array(do_dai,thuc_hanh);
for (int i = 0; i < do_dai; ++i)
{
printf("%i ",thuc_hanh[i]);
}
return 0;
}
khi nhập phần tử đầu tiên thì nó đơ luôn
(5 là số phần tử)
em thử thêm &
vào chỗ gọi hàm và *
vào chỗ khai báo tham số thì nó báo lỗi
note: expected 'int **' but argument is of type 'int (*)[100]'
em thử đọc lại sách nhưng không ăn thua.
khi không thêm &
hay *
nhưng chỉ sửa thành scanf("%i",&/*arr[i]);
thì nó càng lỗi hơn nữa.
Ờ thì ra em nhầm, chỗ scanf("%i",arr[i]);
em phải viết thành scanf("%i",&arr[i]);
mới đúng