sizeof(sturct A)=? 8
struct B {char b; int a; short c ;}
sizeof(struct B)=? 12
原因:{char b; int a; short c ;}
第一个b占据1个字节,剩下了3个字节,当编译器尝试将a放入的时候发现a需要四个字节,拿3个不够,于是,编译器个放弃那三个字节,重新使用4个,然后就是c了
结构体长度求法:
a.成员都相同时(或含数组且数组数据类型同结构体其他成员数据类型):
结构体长度=成员数据类型长度×成员个数(各成员长度之和);
结构体中数组长度=数组数据类型长度×数组元素个数;
b 成员不同且不含其它结构体时;
(1).分析各个成员长度;
(2).找出最大长度的成员长度M(结构体的长度一定是该成员的整数倍);
(3).并按最大成员长度出现的位置将结构体分为若干部分;
(4).各个部分长度一次相加,求出大于该和的最小M的整数倍即为该部分长度
(5).将各个部分长度相加之和即为结构体长度
#pragma pack(1) 我们可以通过#pragma pack()来修正对齐的 这个是告诉编译器字节对齐模式 特别是在内联汇编开发的时候这个比较重要。
struct B
{
char b;
int a;
short c;
};
struct A
{
int a;
char b;
short c ;
};
22、、 char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
count << boolalpha<<(str1==str2)<<endl;
count << boolalpha<<(str3==str4)<<endl;
count << boolalpha<<(str5==str6)<<endl;
答案 F F T;
VOID GetMemory (char *p){p=(char *)malloc(100);}有什么问题
应该改为::::void GetMemory(char **p){*p = (char *)malloc(100);}
// 第一题 函数 没有作用, 没有达到 址传递。传进来的参数 内存也根本是没有分配的。
char *str = NULL;
GetMemory(&str);
strcpy(str, "mmm");
puts(str);