关于结构体的柔性数组

作者:超级管理员 更新时间:2017-09-13 07:57:04 来源:未知 点击:15642
typedef struct my_test {int number;char array[0];}test,*test_p;int main(){test test,test1;test.numbe
typedef struct my_test {
int number;
char array[0];
}test,*test_p;

int main()
{

test test,test1;



test.number = 10;
test1.number = 15;

printf("%d ", sizeof(test));
putchar('\n');
for (size_t i = 0; i < test.number; i++)
{
test.array[i] = i;
}
for (size_t i = 0; i < test1.number; i++)
{
test1.array[i] = i;
}
printf("%d ", sizeof(test));
for (size_t i = 0; i < test.number; i++)
{
printf("%d ", test.array[i]);
}

for (size_t i = 0; i < test1.number; i++)
{
printf("%d ", test1.array[i]);
}


system("pause");
return 0;

}//怎么显示错误, 编译器不会自动申请这个数组的大小么,必须用malloc(sizeof(test)+sizeof(char)*number)才行?

柔性数组本质就是指针访问

http://blog.csdn.net/yby4769250/article/details/7294696

typedef struct my_test {
int number;
char array[0];
}test,*test_p;
//应该是这个地方报错吧?你把typedef删掉就没问题了,但是会出现另一个错误
test test,test1;
//就是这里,你需要改成
struct my_test test, test1;

其他地方并没有错误,针对你给出的代码来说。

是的,编译器不会,因为他根本不知道要申请多大

必需用          。

typedef struct my_test {
int number;
char array[0];
}test,*test_p;

结构体中的char array[0];就是一个指针变量,定义一个这样的结构体变量,array元素就是一个野指针,所以需要给其分配空间。

array[0]    不占空间

推荐阅读

热门内容

神马鬼,一道算是物理题的编程题

原题如下:代码如下:#include

请问一下遍历图像的时候 这种ALU写法为

就是遍历图像的时候, 一次处理2个像素或...

if else 两个语句为什么同时执行了

我的程序里有一个if判断,在dubug下...

求助一个计算问题?

#include in...

请解惑,关于QT用C++写串口通信时的一

我把代码贴出来吧,请帮我看看是哪里出了问...

已添加头文件,但报错找不到标识符

引用错误1error C3861: “r...

错误2365,怎么解决啊,求助

如图这么多短变量名放一块儿,很容易重名的...

感觉现代c++不如d语言

功能都是那些功能,现代c++的实现语法太...

逐行读取文件+并发处理,和先读入整个文件

文本的每一行都是一条记录,程序要求对每条...

C语言新手求助,输出的数字非常大

本帖最后由z4164362于2017-0...

最新内容

神马鬼,一道算是物理题的编程题

原题如下:代码如下:#includeint main(){in...

关于结构体的柔性数组

typedef struct my_test {int number;char ...

iPhone8不是旗舰 2分钟回顾苹果发布会

    中关村在线消息:苹果公司于北京时间9月13日凌晨1点举行新品发布会,这一...

13日凌晨5点 天猫苹果旗舰店的页面开放

    中关村在线消息:今天凌晨,苹果在乔布斯剧院召开秋季新品发布会,正式发布了...

介个真嗝儿 苹果发布会同传天津话版

        今天凌晨科技圈的大事件莫过于苹果秋季新品发布会了。如果你以为这篇...

差价2500 iPhoneX与iPhone8差在哪里了

    苹果iPhoneX比iPhone8好在哪,很多朋友看完发布会仍然蒙蒙的,...

FaceID全球首次失败 网友第一反应竟是

    都在说安全,今年iPhoneX也想掺和一把,根据苹果官方的描述,Face...

iPhone 8天猫首发 12期免息每月不到500

    北京时间9月13日凌晨,苹果公司正式推出年度旗舰手机iPhone 8/8...

苹果iPhone X正式发布 售价8388元起

     中关村在线消息:苹果公司于西部时间9月12日上午10点(北京时间9月1...

苹果发布4K Apple TV 电影院级别的体验

    中关村在线消息:苹果公司将于西部时间9月12日上午10点(北京时间9月1...

天猫和苹果同步小憩 新品发售倒计时

  中关村在线消息:9月12日,晚上7点刚过,天猫Apple Store官方旗舰...

是时候晒一波秋装了 京东热门手机推荐

  主打自拍的手机越来越多,因此很多用户在挑选自拍功能较好的手机时,多多少少都有...

苹果iPhone 8发布 其实就是iPhone 7s

    中关村在线消息:北京时间今天凌晨1时,苹果公司在美国库比蒂诺的乔布斯剧院...

双面玻璃美到起飞 即刻上京东买荣耀9

    荣耀在今年6月发布了高配置高颜值的荣耀9,胡歌的代言及全新的灰色吸引了众...

火星新物种 vivo X20超级装备正式亮相

    正在热播的综艺节目《火星情报局3》,每期爆料都会让成为观众讨论的焦点。在...

准备就绪 苹果官网提前5小时进入维护

  中关村在线消息:距离苹果新品发布会还有五个小时,苹果秋季新品发布会将于北京时...

阿迪达斯iPhone8保护套曝光 外观无悬念

猛击进入iPhone8发布会 每小时都有奖     中关村在线消息:距离2017...

抽到就送一整箱 小茗同学获奖名单公布

 看苹果iPhone8发布会喝小茗同学,点击链接直接进入苹果的直播专题,看到旁边...

iPhone X玩《王者荣耀》 这视野吓一跳

     iPhone X已于今天凌晨发布。不管库克怎么吹,到中国来,一定要打局...

科技6点半:今夜苹果8落地 小米MIX2首摔

     科技6点半,带您快速浏览今天手机行业发生的大事,每天18点30分准时送...