unsigned char 长度及其函数传递等问题

来源:互联网 发布:电子目录制作软件 编辑:程序博客网 时间:2024/06/05 00:20

首先unsigned char 类型的数组并不是字符串,而计算unsigned char 数组大小时,例如:
unsigned char buffer[512];
即使buffer里面有n个字符(n<512),利用sizeof(buffer)求得可能就是512或者更大,并非是n;而利用strlen去求时,得到的是遇到/0时结束的大小,若是buffer里的数据某处有/0,那么strlen得到是错误的值。
注:
strlen(char*)函数求的是字符串的实际长度,直到遇到第一个’\0’,然后就返回计数值,且不包括’\0’。
sizeof()函数返回的是变量声明后所占的内存数,不是实际长度。

那么计算unsigned char 数组的大小时有一种方法是利用数组里最后一个字符来判断大小,例如:
int i;
for ( i = 0;; i++)
{
if (buffer[i] == ‘#’)break;
}
首先我知道这个buffer数组最后一个字符肯定是“#”,所以我用这个方法得到它的大小
感觉运用unsigned char 类型的数据好多都有规定好的或者是一些协议的数据,最后一个字符是定好的,所以用这个方法可以得出数组的大小,进而可以对unsigned char数组进行函数传递,剩下的用自己的代码实现值得传递。

以上是个人看法,要是有错误请多指教,有新方法请告知,感谢

0 0
原创粉丝点击