结构体

1、    strcut A { int a; char b; short c ;};
    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);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值