不明白這段程序,誰給講講,謝謝

/* 將程序空間的字符串復(fù)制到內(nèi)部RAM中,返回字符串長度 */ UINT8 mCopyCodeStringToIRAM( UINT8 idata *iDestination, UINT8 code *iSource ) { UINT8 i = 0; while ( *iDestination = *iSource ) { iDestination ++; iSource ++; i ++; } return( i ); } mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "/TEST.TXT" );

那個while循環(huán)能跳出來嗎,*iDestination = *iSource是把程序空間的字符串復(fù)制到內(nèi)部RAM中,怎么判斷的出字符串結(jié)束了呢?不明白,誰來給咱講講,謝謝。

C語言問題, while( *iDestination = *iSource ) 這句話實(shí)際上是先把 *iSource的值賦給 *iDestination,然后判斷*iDestination是否為0,而字符串結(jié)束應(yīng)該知道是以'\0',即十六進(jìn)制0結(jié)束的,所以就會判斷出結(jié)果 與if(i == 1)寫成if(i = 1)后會導(dǎo)致條件永遠(yuǎn)為真一樣。 不過不建議平常這樣寫,這算是一種玩C語言技巧。下面的寫法是一樣的,執(zhí)行效率也基本上無區(qū)別,只是看起來不簡潔,但容易看得懂。 while(1) { *iDestination = *iSource; if(*iDestination == '\0') break; iDestination ++; iSource ++; i ++; }


謝謝拉,呵呵[Emot]2[/Emot] 都忘記了字符串后面的“\0”啦


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频