我正在完成关于C的CISCO课程,我对以下功能产生了疑问。
有人可以向我解释一下这个函数的逻辑,特别是在这里使用--destination
吗?
char *mystrcat(char *destination, char *source)
{
char *res;
for(res = destination; *destination++; ) ;
for(--destination; (*destination++ = *source++); ) ;
return res;
}
答案 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'
这是因为在第二个示例中,在评估整行之前评估增量。
希望有所帮助。