关于sizeof的实验及其用于结构体的一些现象

之前观察到sizeof的一些现象,现做下记录。

实验一:

struct test{
    int a;
    int b;
}test1;
printf("test1=%d.\n",sizeof(test1));

实验结果为:test1=8;

实验二:

struct test{
    int a;
    int b;
    char c;
    char d;
}test2;
printf("test2=%d.\n",sizeof(test2));

实验结果为:test2=12;

实验三:

struct test{
    int a;
    int b;
    char *c;
}test3;
printf("test3=%d.\n",sizeof(test3));

实验结果为:test3=16;

由此可证明一下几点:

(1)结构体的大小取决于结构体中元素类型的大小和个数。

(2)在ubuntu中结构体内存是4对齐的。

(3)在64位系统中,指针类型不是4个字节,而是8个字节。

此外,还见证了一个实验:

char *buf=NULL;
memset(buf,0,sizeof(buf));

 

这样会报错!我认为原因是buf指针指向了null地址处,该地址处是操作系统严格管控的位置,是不允许被操作的,所以会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值