A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© John_chow 中级黑马   /  2014-10-14 18:09  /  1283 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#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)的是多大

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

7 个回复

倒序浏览
我电脑是32位的 。。。其实我想知道char *p为何是占4个字节
回复 使用道具 举报
结构体有个对齐算法,结构体所占用的内存是其变量占用内存的整数倍,好好看看视频
回复 使用道具 举报
星河鹭起 发表于 2014-10-14 19:42
结构体有个对齐算法,结构体所占用的内存是其变量占用内存的整数倍,好好看看视频 ...

这个我知道 我想知道char *p占四个字节怎么理解
回复 使用道具 举报
John_chow 发表于 2014-10-14 21:08
这个我知道 我想知道char *p占四个字节怎么理解

你32位的肯定是4个字节,64位就是8个字节,这是指针
回复 使用道具 举报
星河鹭起 发表于 2014-10-14 21:34
你32位的肯定是4个字节,64位就是8个字节,这是指针

变量p存放的是一个 char类型字符的一个地址这个地址是32个bit,*p指向存放在p中地址的字符,归结到底*p是一个char值, 有点小纠结。
回复 使用道具 举报
米匠 中级黑马 2014-10-16 15:44:27
7#
应该是24吧,补齐算法
回复 使用道具 举报
32个字节
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马