香可可 2022-01-12 23:34 采纳率: 0%
浏览 22

C语言,分配给字符指针固定大小后,使用sizeof打印出来的结果不符合预期结果


    char *c;
    fflush(stdin);
    c=(char*)malloc(sizeof(char)*5);
    printf("alone char size is: %d\n",sizeof(char));
    printf("size of front: %d\n",sizeof(c));
    gets(c);
    //fflush(stdin);
    printf("size of later: %d\n",sizeof(c));
    printf("c: %s",c);

上述代码,我定义了一个字符指针,并且使用malloc为指针分配了5个大小,然后对指针大小进行打印,结果不是分配给它的5,而是8。而且,再使用gets函数输入了超过5个字符并回车后,打印c,结果也不是5个字符,我不知道咋回事了。截图如下
希望朋友们可以帮帮忙。

img

  • 写回答

2条回答 默认 最新

  • 五一编程 2022-01-12 23:45
    关注

    内存补齐原则,补齐的内存必须时4的倍数,因为你分配了5个字节的内存,所以按照补齐原则,分配了比5大最小的4的倍数是8,故而分配了8个字节

    评论

报告相同问题?

问题事件

  • 创建了问题 1月12日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀