结构体初始化

结构体初始化,

对结构体

struct a {

int b;

int c;

}

有几种初始化方式:

struct a a1 = {   // 胡小沛: 可以跳跃赋值
 .b = 1,
 .c = 2
};
或者
struct a a1 = {
 b:1,
 c:2
}
或者
struct a a1 = { 1, 2};  //必须顺序赋值

内核喜欢用第一种,使用第一种和第二种时,成员初始化顺序可变。



2:

嗯,简单点来说,我有个定义了个结构体:

struct Point
{
 int x;
 int y;
};


然后我这有个类:
class CTest
{
public:
 CTest():
  m_iCount(0), //将m_iCount初始化为0
  m_Point() //这里应该怎么写,对于结构体?
  {}

private:
 int m_iCount;
 Point m_Point;
};

如果m_Point为静态变量还好说,可以在外部这么写:
Point CTest::m_Point = {10,20};

只不过这是成员变量,就不能这么写

回答:  给结构体写个构造函数。。



C语言内存地址对齐及大小端

为啥要内存对齐: 


 因为CPU是32位的,所以它很希望能4个字节4个字节地读。

机器进行数据读取时需要从4字节的边界读取,所以不定义在4字节边界的数据就需要两次读取。比如:如果一个整数定义在4字节边界上就可以在一个时钟周期内读出,否则就需要用两个时钟周期

对其后使用一个时钟周期即可读出,否则可能要两个

你可能感兴趣的:(C++)