Bạn cần phải phân bổ một khối bộ nhớ và sử dụng nó như một mảng như:
int *arr = malloc (sizeof (int) * n); /* n is the length of the array */
int i;
for (i=0; i<n; i++)
{
arr[i] = 0;
}
Nếu bạn cần khởi tạo mảng bằng số không, bạn cũng có thể sử dụng hàm memset
từ stdlib.
memset (arr, 0, sizeof (int) * n);
Đây là hằng số mà mọi locatoin của mảng sẽ được đặt. Lưu ý rằng đối số cuối cùng là số byte được đặt là hằng số. Bởi vì mỗi vị trí của mảng lưu trữ một số nguyên do đó chúng tôi cần phải vượt qua tổng số byte như tham số này.
Ngoài ra nếu bạn muốn xóa mảng thành số không, thì bạn có thể muốn sử dụng calloc
thay vì malloc
. calloc
sẽ trả về khối bộ nhớ sau khi đặt các vị trí byte được phân bổ về 0.
Sau khi bạn đã hoàn tất, hãy giải phóng khối bộ nhớ free (arr)
.
EDIT1
Lưu ý rằng nếu bạn muốn gán một số nguyên đặc biệt tại các địa điểm của một mảng số nguyên sử dụng memset
sau đó nó sẽ là một vấn đề. Điều này là do memset
sẽ diễn giải mảng dưới dạng mảng byte và gán byte mà bạn đã cung cấp cho mỗi byte của mảng. Vì vậy, nếu bạn muốn lưu trữ nói 11243 ở mỗi vị trí sau đó nó sẽ không thể.
EDIT2
Cũng lưu ý do tại sao mỗi khi thiết lập một mảng int 0 với memset
có thể không hoạt động: Why does "memset(arr, -1, sizeof(arr)/sizeof(int))" not clear an integer array to -1? như chỉ ra bởi @Shafik Yaghmour
Bạn có nghĩa là 'p [x] = x;' thay vì 'p [x] = 0;'? – Mysticial
Phương pháp thứ hai là cách chính xác. Người đầu tiên nhận được một lỗi biên dịch, phải không? – Barmar
http://fydo.net/gamedev/dynamic-arrays cho biết cách sử dụng mảng động. trên thực tế, đó là một liên kết rất phổ biến và bạn có thể tìm thấy nó với bất kỳ công cụ tìm kiếm nào ... – franklin