黑马程序员技术交流社区

标题: sizeof结构体大小 [打印本页]

作者: 夜神月No1    时间: 2015-11-21 23:08
标题: sizeof结构体大小

/*
      sizeof可以计算
      1.变量
      2.数组
      3.结构体、联合等
      4.字符串
*/

#include <stdio.h>
//结构体
struct Student//36(40)
{
    //姓名
    char name[23];//23*1 = 23+1=24   36+1+3=36+4=40
    //性别
    char sex;//1+3
    //年龄
    int age;//4      1  1  1  1  1  0 0 0
    //成绩
    double score;//8
};


struct NewStudent//36--->48
{
    char sex;//1 000 0000+7=8
    double score;//8
    char name[23];//23+1=24
    int age;//4 0000+4=8
};

int main(int argc, const char * argv[])
{
    //1.计算一个变量的所占内存字节数
    int a = 100;
    int len = sizeof(a);
    printf("len = %d\n",len);//计算一个变量
   
    //2.sizeof一个类型
    printf("int = %ld\n",sizeof(int));
    printf("short int = %ld\n",sizeof(short));
    printf("long int = %ld\n",sizeof(long));
    printf("int * =%ld\n",sizeof(int *));//64位系统 8字节
   
    //3.sizeof一个数组
    int arr[10] = {0};
    printf("len_arr = %ld\n",sizeof(arr));
    //计算某一个数组元素的大小
    printf("len_arr[0] = %ld\n",sizeof(arr[0]));
    //求数组元素个数
    int brr[] = {0,1,2,3,4,5,6,7,8,9};
    int num = sizeof(brr)/sizeof(brr[0]);
    printf("数组元素个数=%d\n",num);
   
    //4.sizeof 结构体
    printf("sizeof_student = %ld\n",sizeof(struct Student));
    /*
     是因为编译器使用内存时,进行了优化。
     内存字节数的对齐和补齐
     如果一个变量的长度 在64位 是 8字节或是它整数倍我们就说这个变量的长度正好能够对齐。
     如果一个变量的长度 不足8或8的倍数,那么差多少补多少个0,直到能够对齐为止。
     */
    printf("sizeof_newStudent = %ld\n",sizeof(struct NewStudent));
    /*
     记住:结构体的成员变量排列的顺序不同,结果往往也可能不相同。
     */
    return 0;
}

作者: linexs    时间: 2015-11-22 00:18
结构体用size of 求大小,重点是模

----------华丽的分割线----------
雁过留声,人过留名,回帖是一种美德,谢谢!

作者: 夜神月No1    时间: 2015-11-22 00:21
linexs 发表于 2015-11-22 00:18
结构体用size of 求大小,重点是模

----------华丽的分割线----------

我是菜鸟,我会再研究研究的,多谢呀
作者: linexs    时间: 2015-11-22 00:28
同为新手
----------华丽的分割线----------
雁过留声,人过留名,回帖是一种美德,谢谢!

作者: a578530825    时间: 2015-11-22 00:38
感觉没什么卵用
作者: 夜神月No1    时间: 2015-11-22 12:47
a578530825 发表于 2015-11-22 00:38
感觉没什么卵用

就自己之前学的一点东西,看看总是好的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2