黑马程序员技术交流社区

标题: 关于结构体变量占内存空间大小的问题 [打印本页]

作者: John_chow    时间: 2014-10-14 18:09
标题: 关于结构体变量占内存空间大小的问题
#include <stdio.h>


int main()
{
  struct Person
  {
         int age;        
         int height;
         char c;
         char *p;
         
         };
  struct Person per;
  per.p = "jack";
  

  printf("%d",sizeof(per));
  while(1);
  return 0;

  
}

大家来说说 sizeof(per)的是多大
作者: John_chow    时间: 2014-10-14 18:15
我电脑是32位的 。。。其实我想知道char *p为何是占4个字节
作者: 星河鹭起    时间: 2014-10-14 19:42
结构体有个对齐算法,结构体所占用的内存是其变量占用内存的整数倍,好好看看视频
作者: John_chow    时间: 2014-10-14 21:08
星河鹭起 发表于 2014-10-14 19:42
结构体有个对齐算法,结构体所占用的内存是其变量占用内存的整数倍,好好看看视频 ...

这个我知道 我想知道char *p占四个字节怎么理解
作者: 星河鹭起    时间: 2014-10-14 21:34
John_chow 发表于 2014-10-14 21:08
这个我知道 我想知道char *p占四个字节怎么理解

你32位的肯定是4个字节,64位就是8个字节,这是指针
作者: John_chow    时间: 2014-10-14 21:47
星河鹭起 发表于 2014-10-14 21:34
你32位的肯定是4个字节,64位就是8个字节,这是指针

变量p存放的是一个 char类型字符的一个地址这个地址是32个bit,*p指向存放在p中地址的字符,归结到底*p是一个char值, 有点小纠结。
作者: 米匠    时间: 2014-10-16 15:44
应该是24吧,补齐算法
作者: x65396731    时间: 2014-10-16 16:44
32个字节




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2