C語言中的陣列本質上是在計算機記憶體中分配的連續空間。
舉個例子吧:整型陣列(1, 2, 3, 4, 5),如果要把2刪除,那麼可以將3,4,5分別向前移動,變成(1, 3, 4, 5, 5)。由於陣列長度分配以後不會變化,因此最後一個多餘的5實際上並不能刪掉,它只是表示無意義的位置。因此對於程式設計人員來講,需要另一個引數來記錄這個陣列中你認為有用的元素是前多少個。
值得注意的是,如果陣列長度不足以儲存新的元素時,是無法動態地增加陣列長度的。如果非要這麼做,必須要在陣列分配時保證陣列大小足夠大。這也就是一些新手經常將陣列長度設定為1000,10000的原因。
回到這個問題:
// 預定義的陣列,長度為20
int array[20] = {0};
// 陣列當前有效長度
int arrayLen = 0;
// 如果不是全域性陣列,則需要將陣列指標和陣列長度指標傳入進行修改
void insertArray(int newElement, int index)
{
// 這裡沒有做陣列長度的檢驗,你需要自己完成
int i;
for (i = arrayLen++; i > index; )
array[i--] = array[i - 1]; // 後移
array[index] = newElement;
}
void deleteArrayElement(int index)
for ( ; index
arrayLen--;
C語言中的陣列本質上是在計算機記憶體中分配的連續空間。
舉個例子吧:整型陣列(1, 2, 3, 4, 5),如果要把2刪除,那麼可以將3,4,5分別向前移動,變成(1, 3, 4, 5, 5)。由於陣列長度分配以後不會變化,因此最後一個多餘的5實際上並不能刪掉,它只是表示無意義的位置。因此對於程式設計人員來講,需要另一個引數來記錄這個陣列中你認為有用的元素是前多少個。
值得注意的是,如果陣列長度不足以儲存新的元素時,是無法動態地增加陣列長度的。如果非要這麼做,必須要在陣列分配時保證陣列大小足夠大。這也就是一些新手經常將陣列長度設定為1000,10000的原因。
回到這個問題:
// 預定義的陣列,長度為20
int array[20] = {0};
// 陣列當前有效長度
int arrayLen = 0;
// 如果不是全域性陣列,則需要將陣列指標和陣列長度指標傳入進行修改
void insertArray(int newElement, int index)
{
// 這裡沒有做陣列長度的檢驗,你需要自己完成
int i;
for (i = arrayLen++; i > index; )
array[i--] = array[i - 1]; // 後移
array[index] = newElement;
}
void deleteArrayElement(int index)
{
for ( ; index
arrayLen--;
}