2016-09-21 137 views
1

我試圖刪除索引大於或等於指定索引值的數組的元素。如何在指定索引後刪除數組的元素

int values[] = {1,2,3,4,5,6,7}; 
int size_of_array = 7; 
int specified_index = 3; 

for(int i = size_of_array; i >= specified_index; size_of_array--){ 
    values[middle_index + 1] = NULL; 
} 

我對C非常陌生,所以它仍然有點混亂。如果這是重複的道歉。

+2

「道歉」,不後悔但不要問新之前執行的答案基本搜索題。 – kaylum

+0

如果您跟蹤數組中的元素,請使用size_of_array ....只需完成「size_of_array = 3」! –

回答

1

您無法調整C中的數組大小。一旦創建了它的大小,它的大小就是固定的。 如果您可以使用動態內存和指針而不是陣列,則可以使用realloc來調整它的大小。

但是看着你的目的,你實際上並不需要調整的數組,你可以減少size_of_array而忽略其餘的值,例如:

size_of_array -= 4; 

編輯: 爲了澄清我的意思通過忽略價值。我假設通過創建一個數組,你打算實際上有一些工作與它的元素,否則有陣列將是毫無意義的。因此,當你在數組上進行工作時,只需要在你不會忽略的元素上進行操作。讓我們爲求舉例說,我們要打印的數組的值作爲我們的「工作」:

void printArray(int *array, size_t size) { 
    for (size_t itr = 0; itr < size; ++itr) { printf("%d", array[itr])); } 
} 

int main(int argc, char *argv[]) { 
    int values[] = {1,2,3,4,5,6,7}; 
    int size_of_array = 7; 
    int specified_index = 3; 
    // Print the whole array 
    printArray(values, size_of_array); 
    // Print the 'shortened' array by ignoring the rest of the values 
    size_of_array -= 4; 
    printArray(values, size_of_array); 
} 
+0

這是如何擺脫等於或大於第三指數的值?這不會讓我獲得前三項元素嗎? – rebbailey

+0

它並沒有「擺脫」任何值,正如我所說的那樣,對於C中的數組來說這樣做是不可能的。相反,你可以簡單地忽略它們,是的,它們仍然存在於內存中,但只要你做到了在前三個元素上工作,如果你忽略它們,如果更多的存在,它又有什麼關係? – Vality

+0

好的,那麼它如何忽略大於或等於specified_index的值呢? – rebbailey