假设我在C中有一个Foo类型的对象数组:
Foo array[10];
在Java中,我可以通过以下方式将此数组中的对象设置为null:
array[0] = null //the first one
我怎么能在C中这样做?
解决方法
改为使用指针:
Foo *array[10]; // Dynamically allocate the memory for the element in `array[0]` array[0] = new Foo(); array[1] = new Foo(); ... // Make sure you free the memory before setting // the array element to point to null delete array[1]; delete array[0]; // Set the pointer in `array[0]` to point to nullptr array[1] = nullptr; array[0] = nullptr; // Note the above frees the memory allocated for the first element then // sets its pointer to nullptr. You'll have to do this for the rest of the array // if you want to set the entire array to nullptr.
请注意,您需要考虑C中的内存管理,因为与Java不同,它没有垃圾收集器,当您设置对nullptr的引用时,垃圾收集器会自动为您清理内存.此外,nullptr是现代和适当的C方式,因为而不是总是指针类型而不是零.