Một giải pháp có lẽ là sử dụng một mảng cờ riêng biệt. Khi bạn gán một trong các phần tử, hãy đặt cờ trong mảng boolean.
Bạn cũng có thể sử dụng con trỏ. Bạn có thể sử dụng con trỏ null để biểu diễn dữ liệu chưa được gán. Tôi đã thực hiện một ví dụ bên dưới:
int * p_array[3] = {NULL,NULL,NULL};
p_array[0] = malloc(sizeof(int));
*p_array[0] = (int)0;
p_array[2] = malloc(sizeof(int));
*p_array[2] = (int)4;
for (int x = 0; x < 3; x++) {
if (p_array[x] != NULL) {
printf("Element at %i is assigned and the value is %i\n",x,*p_array[x]);
}else{
printf("Element at %i is not assigned.\n",x);
}
}
Bạn có thể tạo một hàm phân bổ bộ nhớ và chức năng khác hoạt động như hàm isset trong PHP bằng cách kiểm tra NULL cho bạn.
Tôi hy vọng điều đó sẽ giúp ích cho bạn.
Chỉnh sửa: Đảm bảo bộ nhớ được deallocated sau khi bạn đã hoàn tất. Một chức năng khác có thể được sử dụng để deallocate một số yếu tố hoặc toàn bộ mảng.
Tôi đã sử dụng con trỏ NULL trước để biểu thị dữ liệu chưa được tạo hoặc cần được tạo lại.
Nguồn
2010-09-05 19:59:48
AFAIK Bạn chỉ có thể kiểm tra với 0. – Robus
@Robus Thực tế là không. C mảng không được cho là được khởi tạo tại 0. – log0