欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

柔性数组例子

程序员文章站 2022-03-15 21:16:07
...

柔性数组例子

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
	
struct player {
	int id;
	int age;
	char name[];
};
	
int main () {
    // 柔性数组,结构中的最后一个元素为可变长数组,定义为[]或[0]
    // 只作为标识占位符,在sizeof()统计长度时不被计算其中
    // 含有柔性数组的结构,通常只能在堆上生成
    
    // error:
    //    struct player me;	 
    //    me.name = malloc(sizeof(char) * 16);	// 错误
    
    
    // 相比在结构中放指针,柔性数组与原结构存储在同一块内存
    // 方便管理,既可以直接拷贝整个结构,也可以直接偏移访问,直接free。
    //
    // 柔性数组,常用于网络编程。
	struct player *p = malloc(sizeof(*p) + sizeof(char) * 16);
	printf("%ld ", sizeof(*p));
	strcpy(p->name, "zhou");
    printf("%s\n", p->name);
	return 0;
}
相关标签: C语言和数据结构