关于定义和遍历数组的问题

请问我有一个未知大小的数组,我该如何去定义他呢?这个数组,只有当我一个一个输入数字,输入完之后,根据我的输入才能知道有几个数字,我该如何去定义他呢?
还有就是如果我想逐个把数字放在一个已知大小的数组的对应数字的位置内,只有一个位置没有放,我该怎么找出没有放的那个位置呢?

望采纳

  • 在 C 语言中,如果你想要定义一个大小未知的数组,你可以使用动态内存分配函数来分配内存空间。具体来说,你可以使用 malloc 函数来为数组分配内存空间。例如:
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int n;
    printf("Enter the number of elements in the array: ");
    scanf("%d", &n);

    int *arr = malloc(n * sizeof(int));
    if (arr == NULL) {
        printf("Error allocating memory for array!\n");
        return 1;
    }

    // 使用 arr 数组

    free(arr);
    return 0;
}
  • 上述代码先读入数组的元素个数 n,然后使用 malloc 函数为数组分配内存空间。注意,由于数组的元素类型是 int,因此需要为每个元素分配 sizeof(int) 个字节的内存。最后使用 free 函数释放内存空间。
  • 对于第二个问题,如果你想要在一个已知大小的数组中寻找空闲的位置,你可以遍历数组,寻找没有被使用的位置。例如:
#define N 10

int main(void) {
    int arr[N] = {0};  // 将数组初始化为 0
    int i;
    for (i = 0; i < N; i++) {
        if (arr[i] == 0) {
            printf("Found empty position at index %d\n", i);
            break;
        }
    }
    if (i == N) {
        printf("Array is full!\n");
    }
    return 0;
}