虽然strlcpy和strlcat使用很安全,但是要正确使用还需要注意sizeof的使用。

1. sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。
   sizeof操作符以字节形式给出了其操作数的存储大小。
   操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。

2. sizeof的使用举例
   char str[] = “Hello”;
   char *p = str;

   char ss[100] = "0123456789";

   int n = 10;
   int intss[100] = "0123456789";

则针对上述变量分别使用sizeof的计算结果是:
   sizeof (str) = 6 (str是数组名,计算到'\0'位置)
   sizeof(*str) = 1(*ss是第一个字符)
   
   sizeof (p) = 4 (p是指向字符串常量的字符指针)
   sizeof(*p) = 1(*p是第一个字符)
  
   sizeof(ss) =100 (ss表示在内存中的大小,等于100×1)

   sizeof (n) = 4 (n是×××常量,32位机器上占用4字节)
   sizeof(intss) = 400 (intss表示在内存中的大小,等于100×4)

特殊情况:
1. 数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,如:
   void Func ( char str[100])
   {……
   }

  则sizeof(str) = 4
  str数组作为虚参声明时,sizeof(str)=4(指针大小)