2016-09-21 6 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; 
} 

私は非常に混乱しています。これが重複している場合はお詫び申し上げます。

+2

「謝罪」、後悔することはありませんが、新しいを尋ねる前に答えのための基本的な検索を実行します:私たちは私たちの「仕事」として配列の値を印刷したいと言う例のために私たちをみよう質問。 – kaylum

+0

配列の要素をsize_of_arrayで追跡すると....ちょうど 'size_of_array = 3' done! –

答えて

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

これは3番目のインデックス以上の値をどのように取り除きますか?これは最初の3つの要素で私を残しませんか? – rebbailey

+0

私は言ったように、Cの配列では不可能な値を "取り除く"ことはできません。代わりに単純にそれらを無視することができます。はい、それらはメモリに残っていますが、最初の3つの要素で作業しますが、無視すればもっと存在すればどうなるでしょうか? – Vality

+0

これは指定されたインデックス以上の値をどのように無視するのですか? – rebbailey

関連する問題