Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 删除数组中的最后一个整数,但不使其变为零_C_Arrays_Queue - Fatal编程技术网

C 删除数组中的最后一个整数,但不使其变为零

C 删除数组中的最后一个整数,但不使其变为零,c,arrays,queue,C,Arrays,Queue,所以我使用了一个基于数组的队列实现 填充完数组后,为了删除第一个元素,我将数组向左移动。 这使得数组中的最后一个元素为零,这也意味着我不能在数组中输入新元素,因为最后一个点被零占据 有没有办法完全删除元素而不是将其变成零 我试着用这个来完全清空队列,但它只是把所有元素都变成了零 case 3: memset(queue, 0, sizeof(queue)); printf("\nThe entire queue has been emptied"); break; 谢谢

所以我使用了一个基于数组的队列实现

填充完数组后,为了删除第一个元素,我将数组向左移动。 这使得数组中的最后一个元素为零,这也意味着我不能在数组中输入新元素,因为最后一个点被零占据

有没有办法完全删除元素而不是将其变成零

我试着用这个来完全清空队列,但它只是把所有元素都变成了零

case 3:
    memset(queue, 0, sizeof(queue));
    printf("\nThe entire queue has been emptied");
    break;

谢谢。

为什么不用新值覆盖最后一个元素?假设队列长度为
n
个元素,您希望用新值覆盖最后一个元素
数组[n-1]
,例如
23

array[n-1] = 23;

完全删除条目听起来是一个困难的问题,因为您正在使数组变小,但在上一个元素原来所在的位置仍会存在一点内存。您应该控制您的程序,使其永远不会试图访问超出数组限制的数组元素,因为结果将是不可预测的

在代码中,让程序知道数组的长度非常重要。计算机可能不会阻止您访问分配给阵列的内存之外的内存,但这是一个非常糟糕的主意-尤其是如果您试图写入它

因此,只要记住数组的长度,删除最后一个元素所需做的就是将数组长度减少1。

C没有“空”数组元素的概念。每个元素都必须包含某些内容。如果愿意,您可以选择将“0”解释为“空”;这取决于你。
*(array+n-1) =23;