有人可以解释我在这里使用--destination吗?

时间:2018-03-29 17:00:01

标签: c

我正在完成关于C的CISCO课程,我对以下功能产生了疑问。

有人可以向我解释一下这个函数的逻辑,特别是在这里使用--destination吗?

char *mystrcat(char *destination, char *source) 
{
    char *res;
    for(res = destination; *destination++; ) ;
    for(--destination; (*destination++ = *source++); ) ;
    return res;
}

2 个答案:

答案 0 :(得分:2)

第一个循环正在寻找字符串teminator。如果找到它,*destination为假,则指针仍然会以*destination++后递增。

因此,下一个循环开始时将指针递减回指向'\0'终结符,以启动连接。

在第二个循环中,复制每个字符,直到找到带有(*destination++ = *source++);的字符串终止符,并将其评估为循环控制。同样,这将包括复制所需的字符串终止符。

答案 1 :(得分:0)

对于不应该写得那么困难的事情来说,这是一个非常复杂的功能。

- 目的地是C的奇怪特征。我假设您已经知道<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script> <script type="text/javascript" src="jquery-ui-timepicker-addon.js"></script> <script type="text/javascript" src="jquery-ui-sliderAccess.js"></script> <script type="text/javascript" src="JScript.js"></script> <link href="App_Themes/CSS/UI.css" rel="stylesheet" type="text/css" \> 将变量递增1。类似地,variable++将变量减1。问题是,当++或 - 在变量名之后,该操作在整个行执行之后完成,当它在变量之前时,C首先执行算术,然后计算整行。

举个例子:

variable--

但是

int c = 5  
print(c++)  -> outputs '5'
print(c)    -> outputs '6'

这是因为在第二个示例中,在评估整行之前评估增量。

希望有所帮助。