C语言-柔性数组

C语言-柔性数组

柔性数组(Flexible Array)是C语言中的一种特性,它允许数组的最后一个成员的大小为0或未知,在定义数组时不给出具体长度,而在运行时动态分配所需的内存空间。

使用柔性数组可以有效地处理变长数据结构,比如在一个结构体中用于存储可变长度的数据。

以下是一个使用柔性数组的示例:

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

struct MyStruct {
    
    
    int size;
    int data[];
};

int main() {
    
    
    int n = 5;
    struct MyStruct* myStruct = malloc(sizeof(struct MyStruct) + n * sizeof(int));
    myStruct->size = n;

    for (int i = 0; i < n; i++) {
    
    
        myStruct->data[i] = i;
    }

    printf("Size: %d\n", myStruct->size);
    for (int i = 0; i < myStruct->size; i++) {
    
    
        printf("Data[%d]: %d\n", i, myStruct->data[i]);
    }

    free(myStruct);
    return 0;
}

在上述示例中,MyStruct结构体中定义了一个柔性数组data[],它表示可变长度的数据。在运行时,根据需要分配所需的内存空间,并使用malloc函数进行动态内存分配。

通过柔性数组,我们可以方便地根据需要存储不同长度的数据,只需在分配内存时动态指定数组长度即可,使得数据结构更加灵活和高效。需要注意的是,在使用完毕后,必须使用free函数释放动态分配的内存空间,以防止内存泄漏。

猜你喜欢

转载自blog.csdn.net/m0_58235748/article/details/131939639