1,<assert.h> assert() {在传参时要养成使用assert的习惯,可以帮助我们找到程序bug}
作用:断言,判断指针是否为空,检查参数是否满足要求,以免引起程序崩溃
例:assert(arr!=NULL) assert(light<eight)
2,三步反转法
左旋n个数:将“abcdefghi”的前n个元素放到最后->cdefghiab
第一步:分成两部分 前n项 ab 剩余的 cdefghi
第二步:将两部分分别逆序 ba ihgfedc
第三步:将所有元素逆序 cdefghiab
3,<string.h> strcat() char *strcat( char *strDestination, const char *strSource );
作用:字符串后面追加一个字符串
例:char arr1[]="abc"
char arr2[]="hij"
strcat(arr1,arr2)-->arr1[]="abchij"
原理:a b c \0 h i j \0
先找到arr1的\0,再将arr2的首元素替换arr1的\0,然后依次放入,直到\0 {注:arr1的空间要足够大,否则会非法访问空间)
注意:arr1{strcat(arr1,arr1)}不能追加自身,因为覆盖\0的同时没有了结束标志,会一直追加下去,是系统奔溃
4, <string.h> strncat() char *strncat( char *strDest, const char *strSource, size_t count );
和strcat相似,但规定了传arr2的长度,如果提前遇到\0依旧会停止
char arr1[20] = { "abcd" };
char arr2[] = "ef\0gh";
strncat(arr1, arr2, 4);----->arr1[20]="abcdef";
5,<string.h> strstr() char *strstr( const char *string, const char *strCharSet );
作用:查找子串,arr1中是否有arr2
找到了返回arr1中arr2首元素字符的地址
未找到返回NULL