C言語で配列に要素を追加する方法は何ですか?

C言語では、配列のサイズは固定であり、配列に直接要素を追加することはできません。しかし、新しい配列を作成し、元の配列の要素と新しい要素を一緒に新しい配列にコピーすることで、配列に要素を追加する効果を実現することができます。具体的な手順は以下の通りです:

  1. 元の配列と新しい要素を指定します:元の配列をarr、新しい要素をnewElementとします。
  2. 元の配列arrのサイズに1を加えたサイズの新しい配列newArrを作成してください:int newArr[length + 1];
  3. 新しい配列newArrに元の配列arrの要素をコピーする:元の配列arrをforループで反復処理し、arr[i]の値をnewArr[i]に代入します。
  4. 新しい要素newElementを新しい配列newArrの最後に追加する:newElementの値をnewArr[length]に割り当てる。
  5. 新しい配列newArrを使用して元の配列arrを置き換えます:新しいアドレスをアサイン演算子でarrに割り当てることで、つまりarr = newArr;。
  6. 元の配列arrのメモリを解放するには、arrが指すメモリ空間を解放するためにfree()関数を使用します。

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

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

int main() {
    int length = 5; // 原数组的大小为5
    int *arr = (int *)malloc(length * sizeof(int)); // 动态分配内存
    int newElement = 6; // 新元素的值为6

    // 初始化原数组arr
    for (int i = 0; i < length; i++) {
        arr[i] = i + 1;
    }

    // 创建一个新的数组newArr,大小为原数组arr的大小加1
    int *newArr = (int *)malloc((length + 1) * sizeof(int));

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

    // 在新数组newArr的最后一个位置添加新元素newElement
    newArr[length] = newElement;

    // 使用新数组newArr替换原数组arr
    arr = newArr;

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

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

    return 0;
}

上記のコードを実行すると、結果は1 2 3 4 5 6となり、新しい要素6が配列arrに正常に追加されたことを示します。

bannerAds