C中字符结尾‘\0’的作用
这几天看到有讲解Strcat函数原型的,在里面发现一个极其有趣的用法
#include <stdio.h> #include <assert.h> #include <stdlib.h> char *strca(char *dst, const char * src) { char *dst_t; dst_t = (char *)malloc(sizeof(dst) + sizeof(src)); char *start = dst_t; assert(dst && src); while(*dst_t = *dst) //是不会进行越界的,默认‘\0’类似“0”,然后跳出 { dst_t++; dst++; } while(*dst_t = *src) { dst_t++; src++; } *dst_t = '\0'; return start; } int main() { char *dst = {"wo ai "}; char *src = {"wo de guo jia !"}; printf("%s\n",strca(dst,src)); return 0; }
中间直接用*dst进行判断没有发生C++中的越界的行为。
编译器‘\0’默认为假,从而跳出判断。 这一点简直比指针省事多了!