游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1801|回复: 5

变量大小

[复制链接]

17

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2007-6-1 16:58:00 | 显示全部楼层 |阅读模式
Hi:

  1. char str[] = “Hello” ;
  2. char *p = str ;
  3. int n = 10;
  4. 请计算
  5. sizeof (str ) = 6
  6. sizeof ( p ) = 4
  7. sizeof ( n ) = 4
复制代码

请问
sizeof ( p ) = 4
sizeof ( n ) = 4
为什么是4啊?

9

主题

198

帖子

198

积分

注册会员

Rank: 2

积分
198
发表于 2007-6-1 17:21:00 | 显示全部楼层

Re:变量大小

哪为什么不是4呢?

65

主题

225

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
发表于 2007-6-1 18:32:00 | 显示全部楼层

Re:变量大小

指针和int都是32位值,因此是4(BYTE)
指针与数组不同
char *p = str;编译器翻译为:char *p = &str[0];
sizeof( &str[0] )的值为4

-----------------------------------
程序开发技术交流QQ群:40280598

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2007-6-2 12:05:00 | 显示全部楼层

Re:变量大小


指针都是4 , 与指针的类型无关.
int 当然是4 , 这个也有疑问, 那么证明你根本没有理解变量.

变量是一段内存, 内存是按字节分节的, 比如你有1GB内存, 就是 1024 * 1024 * 1024 字节的内存, 每个字节有唯一的一个数字编码成为地址, 从 0 ~ 1G.
然后变量的大小,指的是占用的字节的大小. 比如占3个字节,就是3.
然后变量的地址, 就是占用的这3个字节中, 地址码最小的那个字节的地址.

也就是说, 变量 = (地址, 大小) . 这样才能确定一个变量.
然后是变量的内容, 比如int n = 10. 这个10就是存放在变量中的内容, 你可以修改这个内容, 但变量(地址,大小)
是不变的.

int 类型的变量大小是4, char是1, 指针是4, 数组是基本类型大小*数组大小,"hello" 是6个char,所以是6.

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-6-2 12:10:00 | 显示全部楼层

Re:变量大小

调试工具可以看见这些变量的一些“内部”信息。。。但为啥我的VC2005总是无法调试,什么无法生成二进制编码的错误……

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2007-6-2 12:14:00 | 显示全部楼层

Re:变量大小

见林锐的高质量编程指南
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 06:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表