栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

sizeof() 代码示例详解(变量,数组,指针,结构体)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sizeof() 代码示例详解(变量,数组,指针,结构体)

sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。

测试代码:
#include

typedef struct
{
	char c1;
	short int c2;
	short int c[3];
}Test1TypeS;

#pragma pack(push) // 将当前pack设置压栈保存
#pragma pack(1)// 必须在结构体定义之前使用,1个字节对齐 
typedef struct
{
	char c1;
	short int c2;
	short int cc[3];
}Test2TypeS;
#pragma pack(pop) // 恢复先前的pack设置

#pragma pack(push) // 将当前pack设置压栈保存
#pragma pack(1)// 必须在结构体定义之前使用,1个字节对齐 
typedef struct
{
	char c1;
	short int c2;
	short int *pcc;
}Test3TypeS;
#pragma pack(pop) // 恢复先前的pack设置

Test1TypeS sc1; //没加结构对齐关键字 
Test2TypeS sc2; //1个字节对齐 

short int cc_buf[3];
Test3TypeS sc3 = {0, 0, cc_buf}; //1个字节对齐 

int a1;
long int a2;
short int a3;
char a4;
float a5;
double a6;

char ba[7]={1,2,3,4,5,6,7};
char *pba=ba;
char *pba1;

short int bb[3]={1,2,3};
short int *pbb=bb;
short int *pbb1;

void main(void)
{
    printf("以下是电脑 Window 10 64bit 系统下 Dev-C++ 64bit 软件测试结果。仅供C语言参考nn");
    
    printf("int       字节长度:%dn", sizeof(a1));
    printf("long int  字节长度:%dn", sizeof(a2));
    printf("short int 字节长度:%dn", sizeof(a3));
    printf("char      字节长度:%dn", sizeof(a4));
    printf("float     字节长度:%dn", sizeof(a5));
    printf("double    字节长度:%dn", sizeof(a6));
    
	printf("n");
    printf("char ba[7];   sizeof(ba)   = %dn", sizeof(ba));
    printf("char *pba=ba; sizeof(pba)  = %dn", sizeof(pba));
    printf("char *pba1;   sizeof(pba1) = %dn", sizeof(pba1));
    
	printf("n");
    printf("short int bb[3];   sizeof(bb)   = %dn", sizeof(bb));
    printf("short int *pbb=bb; sizeof(pbb)  = %dn", sizeof(pbb));
    printf("short int *pbb1;   sizeof(pbb1) = %dn", sizeof(pbb1));
    
	printf("n");
    printf("Test1TypeS sc1;                  默认字节对齐 sizeof(sc1) = %dn", sizeof(sc1));
    printf("Test2TypeS sc2;                  1 个字节对齐 sizeof(sc2) = %dn", sizeof(sc2));
    printf("Test3TypeS sc3 = {0, 0, cc_buf}; 1 个字节对齐 sizeof(sc3) = %dn", sizeof(sc3));
    printf("short int cc_buf[3]; sc3.pcc = cc_buf;    sizeof(sc3.pcc) = %dn", sizeof(sc3.pcc));
}
运行结果:

结论注意点: 1,结构体要使用sizeof()要注意字节对齐问题。 2,sizeof(数组名) 是数组内存长度。 3,sizeof(指针变量) 是指针变量长度,与硬件位数有关,64位机是8Byte,32位机是4Byte。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/648198.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号