C语言边角料-01
扫描二维码
随时随地手机看文章
- 一、前言
- 二、小试牛刀
- 1. 灵活的数组成员
- 2. 不定参数的宏定义
- 三、为自己打气
一、前言
这几天在把一个嵌入式项目的代码,移植到另一个平台,发现很多地方用的都是 C89 标准。1999 年,C语言的标准化委员会发布了 C99 标准,引入了许多特性,包括可变长度的数组、灵活的数组成员(用在结构体)、对IEEE754浮点数的改进、指定成员的初始化器、内联函数、支持不定参数个数的宏定义,在数据类型上还增加了 long long int 以及复数类型。于是最近找了一本比较新的 C 语言书籍翻了一下,发现很多比较偏僻的语法,很少被使用到,包括 C99 标准中的一些内容,所以我想把这部分内容整理一下,也是让自己对这一门古老的语言重新梳理一下。二、小试牛刀
1. 灵活的数组成员
先不解释概念,我们先来看一个代码示例:// 一个结构体,成员变量 data 是指针
typedef struct _Data1_ {
int num;
char *data;
} Data1;
void demo6_not_good()
{
// 打印结构体的内存大小
int size = sizeof(Data1);
printf("size = %d \n", size);
// 分配一个结构体指针
Data1 *ams = (Data1 *)malloc(size);
ams->num = 1;
// 为结构体中的 data 指针分配空间
ams->data = (char *)malloc(1024);
strcpy(ams->data, "hello");
printf("ams->data = %s \n", ams->data);
// 打印结构体指针、成员变量的地址
printf("ams = 0x%x \n", ams);
printf("ams->num = 0x%x \n",