C語(yǔ)言邊角料-01
[導(dǎo)讀]道哥的第031篇原創(chuàng)一、前言二、小試牛刀1.?靈活的數(shù)組成員2.?不定參數(shù)的宏定義三、為自己打氣一、前言這幾天在把一個(gè)嵌入式項(xiàng)目的代碼,移植到另一個(gè)平臺(tái),發(fā)現(xiàn)很多地方用的都是C89標(biāo)準(zhǔn)。1999年,C語(yǔ)言的標(biāo)準(zhǔn)化委員會(huì)發(fā)布了C99標(biāo)準(zhǔn),引入了許多特性,包括可變長(zhǎng)度的數(shù)組、靈活的數(shù)...
- 一、前言
- 二、小試牛刀
- 1.?靈活的數(shù)組成員
- 2.?不定參數(shù)的宏定義
- 三、為自己打氣
一、前言
這幾天在把一個(gè)嵌入式項(xiàng)目的代碼,移植到另一個(gè)平臺(tái),發(fā)現(xiàn)很多地方用的都是 C89 標(biāo)準(zhǔn)。1999 年,C語(yǔ)言的標(biāo)準(zhǔn)化委員會(huì)發(fā)布了 C99 標(biāo)準(zhǔn),引入了許多特性,包括可變長(zhǎng)度的數(shù)組、靈活的數(shù)組成員(用在結(jié)構(gòu)體)、對(duì)IEEE754浮點(diǎn)數(shù)的改進(jìn)、指定成員的初始化器、內(nèi)聯(lián)函數(shù)、支持不定參數(shù)個(gè)數(shù)的宏定義,在數(shù)據(jù)類型上還增加了 long long int 以及復(fù)數(shù)類型。于是最近找了一本比較新的 C 語(yǔ)言書籍翻了一下,發(fā)現(xiàn)很多比較偏僻的語(yǔ)法,很少被使用到,包括 C99 標(biāo)準(zhǔn)中的一些內(nèi)容,所以我想把這部分內(nèi)容整理一下,也是讓自己對(duì)這一門古老的語(yǔ)言重新梳理一下。二、小試牛刀
1. 靈活的數(shù)組成員
先不解釋概念,我們先來(lái)看一個(gè)代碼示例:// 一個(gè)結(jié)構(gòu)體,成員變量 data 是指針typedef struct _Data1_ { int num; char *data;} Data1;
void demo6_not_good(){ // 打印結(jié)構(gòu)體的內(nèi)存大小 int size = sizeof(Data1); printf("size = %d \n", size);
// 分配一個(gè)結(jié)構(gòu)體指針 Data1 *ams = (Data1 *)malloc(size); ams->num = 1;
// 為結(jié)構(gòu)體中的 data 指針?lè)峙淇臻g ams->data = (char *)malloc(1024); strcpy(ams->data, "hello"); printf("ams->data = %s \n", ams->data);
// 打印結(jié)構(gòu)體指針、成員變量的地址 printf("ams = 0x%x \n", ams); printf("ams->num = 0x%x \n", 




