1.使用柔性数组的话就是在结构体中定义一个长度为0的数组:
structMyData{intnLen;chardata[0];};数组的长度为0就表明数组占用的长度只有一个数组名,当要使用的时候就可以直接分配制定长度的空间,使用完之后释放即可。
intnLen=100;MyData*myData=(MyData*)malloc(sizeof(MyData)+100);
再对这个数组进行其他操作,操作完了之后free掉分配的空间。
2.使用动态分配的方式,和1差不多,只不过要先定义一个指针用来保存分配好的内存空间的其实地址,分配好之后,这个指针就可以当作数组来使用,你要分配多少都是可以变化的,操作完成之后同样要进行释放。
char*p;
p=(char*)malloc(100);
//对p进行操作
free(p);
如果你的变化的长度是来自其他计算公式或者函数也可以,可以另外定义一个函数,函数的返回值可以是结构体或者指针,而参数就是这个变化的长度。
char*TEST(intlen){
char*p;p=(char*)malloc(len);returnp;
}
调用:char*a=TEST(获取长度的其他函数);