看了网络上一些关于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就是该数组内的字节数量。
以上解释够详细了吧!欢迎大家指教!
文章评论(0条评论)
登录后参与讨论