background image

        getchar();
        return 0;
      }

参数是符合它的要求 2 个指针参数的,但是这个程序却运行不了。开始百思不得其解,为
什么参数的类型都正确但是传不回自己想要的结果。这样只能去看函数原型了。

strcat 函数原型

char *strcat(char *strDest, const char *strScr) //将源字符串加 const,表明其为输
入参数
{
    char * address = strDest;             //该语句若放在 assert 之后,编译出错
    
    assert((strDest != NULL) && (strScr != NULL)); //对源地址和目的地址加非 0 断

    
    while(*strDest)             //是 while(*strDest!=’\0’)的简化形式
    {                        //若使用 while(*strDest++),则会出错,因为++是不受循环
        strDest++;               //约束的。所以要在循环体内++;因为要是*strDest 最后指
    }                        //

向该字符串的结束标志 \0’。

    while(*strDest++ = *strScr++) //是 while((*strDest++ = *strScr++)!=’\0’)的
简化形式
    {
        NULL;                 //该循环条件内可以用++,
    }                          //此处可以加语句*strDest=’\0’;有无必要?
    
    return address;               //为了实现链式操作,将目的地址返回

}

从这句话就知道为什么了

while(*strDest++ = *strScr++)

{

    NULL;

}