读书人

如何计算结构 数组大小?如何老是不对

发布时间: 2012-07-19 16:02:19 作者: rapoo

怎么计算结构 数组大小???怎么老是不对啊
所有元素都是unsigned char

data s1[]=
{
{c29, s3}
};

data s2[]=
{
{c29, s2},
{c29, s3},
{c19, s2},
{c28, s2}
};


len = sizeof(data)/sizeof(data[0]);
如此的方式计算出来,总是,相当于指针大小32bit/8bit*2 =2 所以,老是等于2
怎么办??????????

[解决办法]
这样写:

C/C++ code
#include<stdio.h>typedef unsigned char data;int main(){    data s1[]=      {          'C', '3'     };          data s2[]=      {          'C', '4',           'D', '3',           'E', '4',           'F', '5'       };              int len = sizeof(s1)/sizeof(s1[0]);        printf("len = %d\n", len);    len = sizeof(s2)/sizeof(s2[0]);         printf("len = %d\n", len);    return 0;}
[解决办法]
len = sizeof(data)/sizeof(data[0]);


===>
len = sizeof(s2)/sizeof(s2[0]);

[解决办法]
data 是你自己定义的 data type, 不是数组

数组元素数 = sizeof(数组名)/sizeof(数组元素)

note: 数组名不能是指针
[解决办法]
数组元素个数=数组所占内存大小/数组中一个元素所占内存大小=sizeof(数组名)/sizeof(数组元素).
[解决办法]
data 是你自己定义的 data type, 不是数组

数组元素数 = sizeof(数组名)/sizeof(数组元素)

note: 数组名不能是指针

读书人网 >C语言

热点推荐