前言
狄泰软件唐老师的个人学习笔记
1、柔性数组
柔性数组:结构体的最后一个元素可以是大小未知的数组(柔性数组),且不占用存储空间
实验:柔性数组不占用空间
#include <stdio.h>
struct ST
{
int len;
int array[];
};
int main()
{
printf("%d\n", sizeof(struct ST)); //4, 结尾的柔性数组不占用空间
}
柔性数组的用法:前期不写大小,后期通过malloc函数在加上数组大小
实验:柔性数组的用法
#include <stdio.h>
struct SoftArray
{
int len;
int array[];
};
struct SoftArray* creat_soft_array(int size)//创建一个柔性数组
{
struct SoftArray* ret = NULL;
if(size > 0)
{
ret = (struct SoftArray*)malloc(sizeof(struct SoftArray) + sizeof(int)*size);
}
ret->len = size;
return ret;
}
void delete_soft_array(struct SoftArray* a) //删除一个柔性数组
{
free(a);
}
void func(struct SoftArray* sa)
{
int i = 0;
if(sa != NULL)
{
for(i=0; i<sa->len; i++)
{
sa->array[i] = i+1;
}
}
}
int main()
{
int i = 0;
struct SoftArray* sa = creat_soft_array(10);
func(sa);
for(i=0; i<sa->len; i++)
{
printf("%d\n", sa->array[i]);
}
delete_soft_array(sa);
return 0;
}