Cの配列の末尾に要素を追加する方法は何ですか?

C言語では、配列のサイズは固定されており、要素を動的に追加することはできません。既存の配列の末尾に要素を追加する必要がある場合は、より大きな配列を作成し、元の配列の要素を新しい配列にコピーしてから、新しい要素を新しい配列の末尾に追加する必要があります。

具体な手順は以下の通りです:

  1. 新しい配列を宣言し、そのサイズを元の配列より1つ大きくします。
  2. 元の配列の要素を新しい配列にそれぞれコピーするために、ループを使用します。
  3. 新しい要素を新しい配列の最後に追加する。
  4. オプションとして、元の配列のメモリを解放します。
  5. 新しい配列へのポインタを元の配列のポインタに更新します。

以下はサンプルコードです。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int size = 5;  // 原数组的大小
    int* arr = (int*)malloc(size * sizeof(int));
    int i;

    // 初始化原数组
    for (i = 0; i < size; i++) {
        arr[i] = i;
        printf("%d ", arr[i]);
    }
    printf("\n");

    int newSize = size + 1;  // 新数组的大小
    int* newArr = (int*)malloc(newSize * sizeof(int));

    // 将原数组的元素复制到新数组中
    for (i = 0; i < size; i++) {
        newArr[i] = arr[i];
    }

    // 在新数组的末尾添加新元素
    int newElement = 10;
    newArr[newSize - 1] = newElement;

    // 释放原数组的内存
    free(arr);

    // 更新原数组的指针
    arr = newArr;

    // 输出新数组的元素
    for (i = 0; i < newSize; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    free(arr);  // 释放新数组的内存

    return 0;
}

注意,上記のコードは元の配列の末尾に新しい要素を追加する例です。複数の位置に要素を追加したり、頻繁に要素を挿入および削除する場合は、リストや他のデータ構造を使用することをお勧めします。

bannerAds