代码示例:
#include <stdio.h>
#include <malloc.h>
typedef struct tagMyArray
{
int iLen;
int iData[0];
}MyArray;
int main(void)
{
int iLen = 10;
int iLoop = 0;
MyArray *pstMyArray = (MyArray *)malloc( sizeof(MyArray) + sizeof(int)*iLen );
printf("sizeof(MyArray) = %d\n",sizeof(MyArray));
printf("sizeof(MyArray) + sizeof(int)*iLen = %d\n",sizeof(MyArray)+sizeof(int)*iLen);
pstMyArray->iLen = iLen;
for(iLoop=0; iLoop<iLen; iLoop++)
{
pstMyArray->iData[iLoop] = iLoop+1;
printf("%d ",pstMyArray->iData[iLoop]);
}
free(pstMyArray);
return 0;
}
执行结果:
PS D:\Code\Data Structure> .\test.exe
sizeof(MyArray) = 4
sizeof(MyArray) + sizeof(int)*iLen = 44
1 2 3 4 5 6 7 8 9 10
结构体最后元素data[0],定义时不占内存
浙公网安备 33010602011771号