当前位置: 代码迷 >> C语言 >> [求助]sizeof 的细用
  详细解决方案

[求助]sizeof 的细用

热度:796   发布时间:2007-09-10 13:00:25.0
[求助]sizeof 的细用
在老师讲课时讲到了sizeof的用法,它是一个求字节的运算符,在sizeof()的()中应该是数据类型的,但在老师讲的时候有如下的用法:
1. int a[10];
sizeof(a); //得到值是20
sizeof(a)/sizeof(a[0]); //用来算数组的元素个数
2.int *p;
struct s
{
int a,b;
};
struct s*ps
sizeof(p);//的到的值为2
sizeof(ps);//得到的值是2
我想问一下在1,2中用在()中的是数组名和指针是怎么理解啊,我就想啊,那不是在求一个地址的字节数吗?在按不同机器取的不同的值吗
请大家帮忙解释以下!
谢谢!!!!!!!
搜索更多相关的解决方案: sizeof  

----------------解决方案--------------------------------------------------------
struct s *ps
指向结构体的指针

----------------解决方案--------------------------------------------------------
那是怎么回事啊,你能讲清楚点吗

----------------解决方案--------------------------------------------------------
我是这样理解的,地址的值是二个字节,所以各种指针都是2个字节长的。。。
不知道对不对,还要请高人来说明。。。
----------------解决方案--------------------------------------------------------
以下是引用jinxin3256在2007-9-10 15:25:41的发言:
我是这样理解的,地址的值是二个字节,所以各种指针都是2个字节长的。。。
不知道对不对,还要请高人来说明。。。

所有指针和int占一样的空间,但没有人规定int就是2个字节



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/
----------------解决方案--------------------------------------------------------
明白了!
如同INT在不同机器里长度不一致的问题是一样的吧,看来理解的差不多。。
----------------解决方案--------------------------------------------------------

1. int a[10];
sizeof(a); //得到值是20
sizeof(a)/sizeof(a[0]); //用来算数组的元素个数


sizeof(a) : a是指向10个整形数祖的指针```结合肥燕的话``那么a这个时候和它指向的10个int占一样的空间``你这里说

得到的值是20````而数组只有10个元素``那么每个int类型的元素占2个字节```

这个表达试意思就是求整个数组占的字节数```

sizeof(a)/sizeof(a[0]): sizeof(a) 你已经明白了``sizeof(a[0]) 里面的a[0]是一个int``就是说它是计算一个数组

元素占的字节数``

结果就是用求得的数组的字节数``除以``每个数组元素所占的字节数```即可以得到数组的元

素个数.

第2个问题``用同样的方法理解```


不知道我上面说的对不对````如果有错``希望各位斑竹指正```特别是肥燕啊```帮我看看```因为你经常一不小心就发现我

说的错误```然后我就受到了美好的打击```








----------------解决方案--------------------------------------------------------
哦谢谢大家拉
但我还觉得有写问题,好象是对在()内的是在C中的一种规定,
对与2中的指针我还是有些搞不太懂啊,好象只针对int 的内存是占二个字节的来说的,好象和地址没什么关系,就是搞不太懂这点拉
请大家提提供些线索把
谢谢大家能回帖!!!!!!
----------------解决方案--------------------------------------------------------
指针同INT一样占同样的字节数,指针里面就是地址。。
----------------解决方案--------------------------------------------------------
  相关解决方案