c语言sizeof用法


一、函数功能简介

sizeof是返回一个类型或对象,在内存中所占字节数。
sizeof也可以返回结构体 联合 枚举等类型在内存中所占用的字节数。


二、函数用法

double d=”123″;
sizeof(double); //用法1
sizeof(d); //用法2
sizeof d ; //用法3


指针变量的sizeof
由于指针就是一个地址变量,指针变量的最大值等于计算机中内存的最大值地址,所以指针变量所占用的字节数:
32位的机器 占用4字节
64位的机器 占用8字节
结构体的sizeof
结构体sizeof等于结构体中所有成员所占字节之和
联合体的sizeof
联合体sizeof:取联合中成员占用最大字节数作为sizeof的字节数


三、函数举例使用说明

#include "stdio.h"

struct adeal{
 int a;
 char *d;
};

struct adeal2{
  int a;
};

struct adeal3{
  char *d;
};

struct adeal4{
  short int a;
  char  d;
 };

int main(){
  int a1;
  short int a1_;
  unsigned  int a2;
  long int a3;
  unsigned long int a4;
  float a5;
  double a6;
  char a7;
  char *a8=&a6;
  struct adeal a9;
  struct adeal2 a10;
  struct adeal3 a11; 
  struct adeal4 a12;
 
  printf("整型长度:%d\n",sizeof(a1));
  printf("短整型长度:%d\n",sizeof(a1_));
  printf("无符号整型长度:%d\n",sizeof(a2));
  printf("长整型长度:%d\n",sizeof(a3)); 
  printf("无符号长整型长度:%d\n",sizeof(a4));
  printf("浮点型长度:%d\n",sizeof(a5)); 
  printf("双精度长度:%d\n",sizeof(a6));
  printf("字符型长度:%d\n",sizeof(a7));
  printf("字符型指针长度:%d\n",sizeof(a8));
  printf("结构的长度:%d\n",sizeof(a9));
  printf("结构的长度:%d\n",sizeof(a10));
  printf("结构的长度:%d\n",sizeof(a11));
  printf("结构的长度:%d\n",sizeof(a12));
  return 1;
} 

[root@localhost ~]# ./t
整型长度:4
短整型长度:2
无符号整型长度:4
长整型长度:8
无符号长整型长度:8
浮点型长度:4
双精度长度:8
字符型长度:1
字符型指针长度:8
结构的长度:16
结构的长度:4
结构的长度:8
结构的长度:4
注意事项:

//结构体的长度计算方式:
在结构体中,结构体的长度等于所有类型长度的合计,并且必须等于其中占用内存长度最大的成员项的整数倍。