A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夜神月No1 中级黑马   /  2015-11-21 23:08  /  1853 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


/*
      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;
}

5 个回复

倒序浏览
结构体用size of 求大小,重点是模

----------华丽的分割线----------
雁过留声,人过留名,回帖是一种美德,谢谢!
回复 使用道具 举报
linexs 发表于 2015-11-22 00:18
结构体用size of 求大小,重点是模

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

我是菜鸟,我会再研究研究的,多谢呀
回复 使用道具 举报
同为新手
----------华丽的分割线----------
雁过留声,人过留名,回帖是一种美德,谢谢!
回复 使用道具 举报
感觉没什么卵用
回复 使用道具 举报

就自己之前学的一点东西,看看总是好的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马