C中字符结尾‘’的作用

这几天看到有讲解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”,然后跳出
        {
                dst_t++; dst++;
        }
        while(*dst_t = *src)
        {
                dst_t++; src++;
        }
        *dst_t = '';
        return start;
}

int main()
{
        char *dst = {"wo ai "};
        char *src = {"wo de guo jia !"};
        printf("%s
",strca(dst,src));
        return 0;
}

中间直接用*dst进行判断没有发生C++中的越界的行为。

编译器‘’默认为假,从而跳出判断。   这一点简直比指针省事多了!

原文地址:https://www.cnblogs.com/daocaorenblog/p/5276706.html