oc struct

oc中结构的对齐规则和vc不太一样。

比如:

typedef struct testStruct{

    NSString *testStr1;

}TEST_STRUCT;

打印sizeof(TEST_STRUCT):结果是4

typedef struct testStruct{

    NSString *testStr1;

    double testdub;

}TEST_STRUCT;

打印sizeof(TEST_STRUCT):结果是12

typedef struct testStruct{

    NSString *testStr1;

    double testdub;

    char testChr;

    NSString *testStr2;

}TEST_STRUCT;

打印sizeof(TEST_STRUCT):结果是20

typedef struct testStruct{

    NSString *testStr1;

    double testdub;

    char testChr;

    short testSht;

    NSString *testStr2;

}TEST_STRUCT;

打印sizeof(TEST_STRUCT):结果是20

注意点:

1.testStr1是指针,4个字节,指针地址是0。第二个参数是doublue型,8个字节,但并没有像oc那样指针地址从8开始,而是从4开始。开始的地址并不需要是当前参数所需内存字节的倍数。

2.

char testChr;

short testSht;公用一个4字节。

3.double型字节数是8,但是整个结构的字节数并不是8的倍数,也不同于VC

结论:oc下结构,以4字节为界限,当参数类型超过4字节(比如double)时,会填满之前的4字节再开始填入内存。当参数类型少于4字节(charshort)时,规则相同于VC——即填满参数类型需要字节数的倍数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值