怎么计算结构 数组大小???怎么老是不对啊
所有元素都是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
怎么办??????????
[解决办法]
这样写:
#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: 数组名不能是指针