我一直在努力记住旧的编程概念,比如数据结构。

我的第一个挑战是实现我自己的正整数数组:

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

int* array_initialize(int size) {
    return calloc(size, size * sizeof(int));
}

void array_set(int *array, int index, int value) {
    array += index;
    *array = value;
}

int array_get(int *array, int index) {
    array += index;
    return *array;
}

int array_size(int *array) {
    int size = 0;
    while(*array != 0) {
        size++;
        array++;
    }
    return size;
}

int main() {
    int* array = array_initialize(5);

    array_set(array, 0, 2);
    array_set(array, 1, 4);
    array_set(array, 2, 6);
    array_set(array, 3, 8);
    array_set(array, 4, 10);

    for (int i = 0; i < array_size(array); i++) {
        printf("Index #%d -> %d\n", i, array_get(array, i));
    }
    printf("\nSize: %d\n", array_size(array));

    free(array);

    return 0;
}

我可以称之为数组吗?

这是一个好的起点吗?你会改变什么?

我可以用 [] 读取/写入数组值?

最佳回复

数组集可以写为 *(array + index) = value; 你的数组get可以写成 return *(array + index); .

array[index] 也可以写成 *(array + index) . 这两个功能没有任何你已经做不到的 [] .