2016-09-21 59 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

相关问题