原创 关于C51求数组字节数量的详解(sizeof的详解)

2009-7-1 11:35 3835 10 10 分类: MCU/ 嵌入式

看了网络上一些关于sizeof的用法,决的都没有针对C51内的详细说明,在此进行详细解释,以便供大家参考:


例如数组:


 unsigned char code parameter_tabal[] =
 {
          1,2,3,4,5,6,7,8,   //password_addr
 };


关于数组parameter_tabal[] 的字节长度计算分析如下:


首先,定义宏定义:#define countof(a)   sizeof(*(a))//(sizeof(a) / sizeof(*(a)))



//sizeof(a) = 数组字节长度(例子为8)
//sizeof(*(a)) = 数组变量类型(char = 1、int = 2(例子为1))
//数组长度=sizeof(数组)/sizeof(*数组)
//数组长度=sizeod(数组)/sizeof(*数组) (数组内为纯数字)
//数组长度=sizeod(数组)-1/sizeof(*数组) (数组内为纯字符或者数字数组混和)


例:unsigned char code parameter_tab[] =
 {
  1,2,3,4,5,6,7,8,"ab"  //password_addr
 }; 


 


最后,那么调用宏定义,即可得出该数组内的字节数量:
#define WriteBufferSize   (countof(parameter_tab))


WriteBufferSize就等于该数组内的字节数量。


完整用法:


//================================================


#define countof(a)   sizeof(*(a))//(sizeof(a) / sizeof(*(a)))


#define WriteBufferSize   (countof(parameter_tab))


//===============================================


WriteBufferSize就是该数组内的字节数量。


以上解释够详细了吧!欢迎大家指教!


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
10
关闭 站长推荐上一条 /3 下一条