1,字符长度
#include <string.h>
size_t strlen(const char *s);
DESCRIPTION
The strlen() function calculates the length of the string s, excluding the terminating null byte ('\0').
从上面描述来看,字符长度是不包括结束符号的,比如:
int main(int argc,char *argv[])
{
char testStr[20] = "abcdef";
printf("testStr len:%d\n",strlen(testStr));
}
运行结果:testStr len:6
所以在内存上操作上的长度必须预留或增加一个结束符;比如
char *p_strbuf = malloc(strlen(testStr) +1);
memcpy(p_strbuf ,testStr,strlen(testStr));
p_strbuf [strlen(testStr) ] = '\0';或者memcpy前,memset(p_strbuf ,0,strlen(testStr) +1);
不预留的隐形风险:p_strbuf 字符长度异常或,strcpy越界;strncpy需要回填结束符或长度+1;
2,指针累计括号等价,并不因为加了括号后运行步骤增加。
char *p_start = testStr;
char *p_tmp = p_start;
printf("*(p_start++):%d\n",*(p_start++));
printf("*p_tmp++:%d\n",*p_tmp++);
运行结果都是97;
char *p_start = testStr;
char *p_tmp = p_start;
printf("*(++p_start):%d\n",*(++p_start));
printf("*++p_tmp:%d\n",*++p_tmp);
运行结果都是98;