C语言创建柔性数组

typedef struct 

{

int array[];

...

} SoftArray;


SoftArray* create_soft_array(int size)

{
    SoftArray* ret = NULL;
    
    if( size > 0 )
    {
        ret = (SoftArray*)malloc(sizeof(*ret) sizeof(*(ret->array)) * size);
        
        ret->len = size;
    }
    
    return ret;
}


 
Q:   ret 为NULL,访问ret->array为什么没有导致程序奔溃呢
        这里没有访问ret->array(即没要它的地址),只是要了array的类型。 ret为SoftArray * 类型
  在编译的时候  管它ret是不是Null。  在sizeof里面  只取它的类型就OK。( sizeof不会访问,只是确定数据类型

//sizeof(*ret)在编译阶段就确定,为结构体SoftArray大小

*(ret->array)为结构体中array数组类型大小,若为int型,则为4字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值