首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-07-19 
怎么计算结构 数组大小???怎么老是不对啊所有元素都是unsigned chardata s1[]{{c29, s3}}data s2[]{{c2

怎么计算结构 数组大小???怎么老是不对啊
所有元素都是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: 数组名不能是指针

热点排行