问题描述
- 关于c++结构体长度的问题
-
#include <iostream> using namespace std; struct Student{ char ch; int i; }st1; struct name{ }n; struct j{ static int i ; }l; struct nam{ static int i; }e; struct Studen{ }st; int main(){ int s = sizeof(st1); int n2 = sizeof(n); int l = sizeof(l); int e1 = sizeof(e); int se = sizeof(st); printf("%d %d %d %d %d", s, l, n2, e1, se); return 0; }
在这个程序中,第二个输出的数字为什么是4呢?不应该是1么?
解决方案
结构体按照4字节的倍数对齐。
解决方案二:
http://www.cnblogs.com/motadou/archive/2009/01/17/1558438.html
http://www.cnblogs.com/longlybits/articles/2385343.html
http://www.cnblogs.com/luxiaoxun/archive/2012/11/09/2762438.html
解决方案三:
一个结构体长度的问题
c++中关于结构体长度的c++结构体对齐问题
解决方案四:
第二个 输出的 不是 sizeof(l)吗, l位 int类型。 int类型是4字节的
解决方案五:
就是1
printf("%d %d %d %d %d", s, l, n2, e1, se);里的l和n2楼主你的顺序写错了吧
解决方案六:
对结构体进行sizeof不是单纯的内部变量的的字节和。涉及到内存对齐的问题,具体可以百度。结构体中最长字节不超过4时,默认4字节对齐
时间: 2024-10-01 05:50:49