| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1128 人关注过本帖
标题:关于关键字sizeof
只看楼主 加入收藏
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:11 
关于关键字sizeof
在网上看到一些问题,用VC++6.0编译后发现:
int a[100];     /* 先定义一个数组 */
sizeof(a[100])  /* 所求出来的是4 */
sizeof(a)  /* 所求出来的是400 */
不是太理解
※sizeof(a[100])求出来4,sizeof(a)表示计算a这个数组所占字节数,sizeof(a[100])难道不是表示计算数组所占字节数么?那么是代表什么?  答案:a[100]表示一个越界的元素
int a;
char b,c[100];
sizeof(&a)=4
sizeof(&b)=4
sizeof(&c[0])=4
※如果sizeof()内是地址,表示的值是什么?为什么以上计算结果都为4?  答案:地址都是一串整形数字,所以地址被当成整形来计算,所以为4。
以上问题已解决
==========================================================
未解决的问题

enum Color
{
   GREEN = 1,
   RED,
   BLUE,
   GREEN_RED = 10,
   GREEN_BLUE
}ColorVal;

※sizeof(ColorVal)的值是什么?为什么?

[ 本帖最后由 果沫 于 2013-2-1 10:22 编辑 ]
搜索更多相关主题的帖子: 关键字 元素 
2013-01-31 22:19
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
sizeof  是啥   是函数吗  是宏吗  是类型吗

DO IT YOURSELF !
2013-01-31 22:27
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:0 
回复 2楼 wp231957
= = 关键字
2013-01-31 22:28
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
sizeof(&a)      /* 所求出来的是400 */
不解?

Stay hungry , Stay foolish!
2013-01-31 22:56
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:0 
回复 4楼 清微御宇
问题上面有

[ 本帖最后由 果沫 于 2013-1-31 23:14 编辑 ]
2013-01-31 23:03
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:10 
回复 5楼 果沫
a是一个数组元素,含有100个int型数据的数组,sizeof(a)为100*sizeof(int)。a[100]就是数组中一个元素虽然越界了依然会被解析成int型数据,sizeof(a[100])既sizeof(int)。sizeof(&a)既sizeof(&a[0])一样既为指针类型数据在计算机中的长度!
如果sizeof()内是一个指针所指的地址,是否是表示保存在此地址的数据所占字节数?
肯定不是,最简单的
char *a;
int *b;

sizeof(a)=sizeof(b)……
虽然a和&a的值相等,但意义不同,你可以在单步调试时查看a和&a的指向是不一样的,以上个人见解,交流下!

[ 本帖最后由 清微御宇 于 2013-2-1 00:38 编辑 ]

Stay hungry , Stay foolish!
2013-02-01 00:21
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
收藏
得分:0 
按照楼主的sizeof(a)就是sizeof(int)*100=4*100=400;sizeof(a[100])是sizeof(int)=4;   sizeof()内是一个指针所指的地址我觉得是指针本身的大小。
2013-02-01 00:52
ren613
Rank: 3Rank: 3
来 自:宣武
等 级:论坛游侠
帖 子:117
专家分:120
注 册:2012-11-20
收藏
得分:5 
a代表的是数组a[100]是数组元素,当然数组a[100]中没有a[100]这个元素

天道酬勤
2013-02-01 06:40
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:0 
回复 6楼 清微御宇
a[100]理解了,但是那个指针还是不太理解
2013-02-01 10:02
bobo2185355
Rank: 2
等 级:论坛游民
帖 子:81
专家分:43
注 册:2010-4-11
收藏
得分:0 
sizeof返回的是字节数
2013-02-02 10:02
快速回复:关于关键字sizeof
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023897 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved