数据长度问题

[复制链接]
3432|9
 楼主| pttptt85 发表于 2010-11-28 16:21 | 显示全部楼层 |阅读模式
我定义了一个结构
typedef struct
{
....
}ST,pST;

ST      st[] = {....};
哪我如何在函数中反映结构的长度呢?
void    function(pST  stt)
{
      unsigned char   size;

      ...........
      size = stt 的长度; 如何反映stt的长度呢?如果用sizeof,只能得到通用指针的            长度
     ..............
}

main()
{
.........
  function(st);   如何在函数里反映st的长度?
 ...
原野之狼 发表于 2010-11-28 19:22 | 显示全部楼层
size = sizeof(*stt);
ayb_ice 发表于 2010-11-29 08:27 | 显示全部楼层
size = sizeof(ST);
 楼主| pttptt85 发表于 2010-11-30 17:09 | 显示全部楼层
上面的答复都好象有问题,我要的是结构数组的字节数,而不是单个的结构字节树.上面2个答复都是单个结构的长度
zhangf1021 发表于 2010-11-30 17:12 | 显示全部楼层
再乘个数组元素数不就好了
原野之狼 发表于 2010-11-30 20:38 | 显示全部楼层
如果从技术上处理比较困难 那么应该先考虑一下总体结构是否有问题
数组作为参数传给一个函数 传递的只是一个指针 该函数是无法知道该指针指向的实体有多大的
而要获得st的大小 直接sizeof(st)就可以了 不用拐这么多弯的
yewuyi 发表于 2010-11-30 21:01 | 显示全部楼层
同意LS,直接sizeof(st)即可。
你IT了吗 发表于 2010-11-30 23:54 | 显示全部楼层
函数内部无法知道指针指向的长度,实在需要知道,多加一个参数咯

void    function(pST  stt, unsigned int len)
{
      unsigned char   size;

      ...........
      size = len;     ..............
}

main()
{
.........
  function(st,sizeof(st));  ...
原野之狼 发表于 2010-12-1 00:39 | 显示全部楼层
第二个参数一般不会按字节算的
而是按元素个数来算
 楼主| pttptt85 发表于 2010-12-2 16:10 | 显示全部楼层
上面在函数中直接用SIZEOF(ST)得到的是通用指针的长度既3个字节.
在函数上多加一个参数倒是可行,还有其他方法没有
您需要登录后才可以回帖 登录 | 注册

本版积分规则

45

主题

110

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部