自定义类型
字节对齐
struct Test
{
int Num;
char *pcName;
short sData;
char ch;
}*p=(Test*)0x2000;
struct Test p2;
p2.Num=100;//初始化结构体的指针访问其成员可以使用---->,c++主函数中可以省去struct
int main()
{
printf("%d\n",p+1); //2012
printf("%d\n",(unsigned long)p+1);//2001
printf("%d\n", (unsigned int*)p + 1);//2004
}
【1】typedef和#define的区别?
(1)用法不同:typedef是变量类型的别名,增强程序的可读性。宏是字符替换。
(2)执行时间不同:typedef是变异过程的一部分,有类型检查的功能,define在预编译部分,在编译之前,无类型检查;
(3)作用域不同:typedef有作用域限定,define不受作用域限定;
(4)对指针的操作不同:define定义是字符替换,typedef是类型,typedef结束要加分号;
【2】用代码检测当期系统的大端小端模式?
int a = 0x11223344;
char *p = (char*)&a;
if (*p == 0x44)
{
printf("小端");
}
【3】struct和class的区别?
struct默认为public,class默认为private
【4】struct和union的区别?
struct 每个成员都分配独立的内存空间,union共用一个内存空间,enum是变量的名称的集合
【5】struct结构体的内存对齐问题?
前面是后面的倍数,所有数是最大数的倍数
【6】c++ 的空结构体占多大内存?能不能来定义变量?变量有没有地址?多个空结构体定义的变量内存地址空间是相同的还是连续的?
一个字节 能 有 线性的 class也是如此 c中不能定义空结构体