Chinaunix首页 | 论坛 | 博客
  • 博客访问: 587832
  • 博文数量: 165
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1554
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-23 22:57
个人简介

我本仁慈,奈何苍天不许

文章分类

全部博文(165)

文章存档

2018年(1)

2016年(33)

2015年(5)

2014年(34)

2013年(92)

分类: LINUX

2014-01-15 20:27:40

#include 

#include 

typedef struct aaa{

int a;

char b[3];

short c;

}AAA;

int main()

{

int a[] = {1,2,3,4,5,6,7};

AAA p;

p = *(   (AAA*)a   );

printf("%d %s %d %d\n", p.a, p.b, p.c, strlen(p.b));//1, ASSIC码为2字符, 3, 1

printf("%d %s %d %d\n", p.a, p.b, p.c, sizeof(p.b));//1, ASSIC码为2字符, 3, 3

}

数组a(小段模式)

0

0

0

1

0

0

0

2

0

0

0

3

0

0

0

4

0

0

0

5

0

0

0

6

0

0

0

7

0

0

0

1

0

0

2

0

3

结构体b

因为p.b是按照字符串的格式输出的,所以当读取到第一个字节为2之后,读取第二个字节时,遇到了0,所以就停止了,故输出的就是ASSIC码为2的字符;同理,strlen函数传进去的是字符串,遇到‘0’就停止,故输出为1,而关键字sizeof是计算p.b总共能存放多少字节,所以输出为3

阅读(1198) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~