extern int grid[];
Giả sử bạn có một số mã như thế này:
int grid[] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 2 , 3 , 2 , 3 , 2 , 3 , 1 ,
1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ,
1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 ,
1 , 0 , 1 , 0 , 0 , 0 , 0 , 1 ,
1 , 0 , 0 , 0 , 0 , 0 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 };
int arr_sum(int* arr, int len)
{
int sum = 0;
for (int i = 0; i < len; i++) {
sum += arr[i];
}
return sum;
}
int main(int argc, char** argv)
{
printf("%d\n", arr_sum(grid, sizeof(grid)/sizeof(int)));
return 0;
}
Nếu bạn muốn tách này ra thành hai tập tin khác nhau, chẳng hạn, bạn có thể có những điều sau đây, ví dụ:
trong grid.c:
int grid[] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 2 , 3 , 2 , 3 , 2 , 3 , 1 ,
1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ,
1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 ,
1 , 0 , 1 , 0 , 0 , 0 , 0 , 1 ,
1 , 0 , 0 , 0 , 0 , 0 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 };
Trong main.c:
extern grid[];
int arr_sum(int* arr, int len)
{
int sum = 0;
for (int i = 0; i < len; i++) {
sum += arr[i];
}
return sum;
}
int main(int argc, char** argv)
{
printf("%d\n", arr_sum(grid, sizeof(grid)/sizeof(int)));
return 0;
}
làm thế nào để xây dựng các mảng trong tập tin thực hiện? –
Bạn không cần phải xây dựng nó ở bất cứ nơi nào khác. Có mã mà bạn đã liệt kê ở trên trong main.c và đặt "extern int grid []" trong một tệp tiêu đề chung được sử dụng bởi các tệp nguồn khác sử dụng lưới. Hoặc nếu bạn không muốn tiêu đề, chỉ cần đặt extern bất cứ nơi nào lưới được sử dụng. – Parappa
nó biên dịch, nhưng nếu tôi cố gắng truy cập mảng từ một hàm khác đến nơi nó được xác định, trình biên dịch sẽ gửi một lỗi:/ –