执行C语言程序段“struct s{ long a;char b;};printf("%d",sizeof(struct s));” 输出的结果是什么说明

执行C语言程序段“struct s{ long a;char b;};printf("%d",sizeof(struct s));” 输出的结果是什么说明,第1张

sizeof(type)用于返回指定类型所占内存空间。

比如说,一般的机器上都是

sizeof(char)返回1,即char类型占1字节,

sizeof(long)返回4,即long类型占8字节,

对于自定义的数据类型struct s{ long a;char b;};,返回的就是该结构体内所有基本数据类型所占字节数的总和,所以sizeof(struct s)应该返回sizeof(long)+sizeof(char)=4+1=5字节。考虑到现在机器对于数据存储一般都要求按边界对齐(这样可以减少读取次数),如果按字对齐的话,那sizeof(struct s)也有可能返回6。LZ你写个测试程序自己测试吧。

这是一个C++中的矩阵类,Mat是一个最大维数为1010的矩阵类,x,y分别表示矩阵的维度。operator就是普通的矩阵乘法咯、

写在后面的a,single都是Mat的实例,这是一种声明的方式。相当于单独地写出:Mat a;Mat single;

结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。在一般情况下,tag、member-list、variable-list这3部分至少要出现2个。

结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针,而通常这种指针的应用是为了实现一些更高级的数据结构如链表和树等。如果两个结构体互相包含,则需要对其中一个结构体进行不完整声明。

扩展资料:

一、结构体作用:

结构体和其他类型基础数据类型一样,例如int类型,char类型,只不过结构体可以做成你想要的数据类型,以方便日后的使用。

在实际项目中,结构体是大量存在的,研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算。

结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。

二、结构体的大小与内存对齐:

结构体的大小不是结构体元素单纯相加就行的,因为我们主流的计算机使用的都是32bit字长的CPU,对这类型的CPU取4个字节的数要比取一个字节要高效,也更方便。

所以在结构体中每个成员的首地址都是4的整数倍的话,取数据元素时就会相对更高效,这就是内存对齐的由来。每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。

程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。

三、结构体的规则:

1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。

2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)最大数据成员长度中,比较小的那个进行。

3、结合1、2可推断:当#pragma pack的n值等于或超过所有数据成员长度的时候,这个n值的大小将不产生任何效果。

参考资料来源:百度百科-结构体

char getterm(char ch) //获取一行的字符

{

int i=0;

char str[100],p;

p=new char[100];

while(ch!='\n'){ //把单个字符存入数组,直到碰到换行符

str[i++]=ch;ch=finget();

}

str[i]='\0';

strcpy(p,str);

return p;

}

让我说啥好,你仔细看看这函数吧,。。。

1 &yre,&yim

2 xre+yre

3 xim+yim

4 sre,sim

估计是复数的加法,只能这么猜了

没有上下文的话,这个题目出得太奇怪了

以上就是关于执行C语言程序段“struct s{ long a;char b;};printf("%d",sizeof(struct s));” 输出的结果是什么说明全部的内容,包括:执行C语言程序段“struct s{ long a;char b;};printf("%d",sizeof(struct s));” 输出的结果是什么说明、C C++中struct的用法、c语言中如何定义一个结构体等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10625764.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存