arr[0]或者arr[1]表示连接在结构体后的一块可利用的已知空间,具体用法如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct example {
char a[16];
char arr[1]; //也可以是arr[0]
}EXAM;
int main()
{
char buf[256] = {0};
char tmp[8] = {0};
int i;
EXAM * ptr = (EXAM *)buf;
for(i=0;i<8;i++)
{
tmp[i] = i;
}
memcpy(ptr->arr,tmp,8);
for(i=0;i<8;i++)
{
printf("%hhd ", *(ptr->arr+i));
}
return 0;
}
运行结果:0 1 2 3 4 5 6 7