/* 将程序空间的字符串复制到外部RAM中,返回字符串长度 */ UINT8 mCopyCodeStringToXRAM( UINT8 xdata *iDestination, UINT8 code *iSource ) { UINT8 i = 0; while ( *iDestination = *iSource ) { iDestination ++; iSource ++; i ++; } return( i ); } 我看例程中有这个复制函数,但我不明白while语句怎么可以这样使用呢,()里面怎么是一个赋值语句,赋值语句难道能返回BOOL型吗?如果这样的话,这个while循环什么是时候结束呢? 我查了一下,如果是在 *iSource 为0的时候,*iSource 将0值赋值给*iDestination 变量,然后()内部也就为0了,然后while就结束,是不是这样理解呢? 这样理解的话,那这个函数就不能实现把*iSource 的0值赋值给*iDestination 变量了,他每次遇到0值就结束了。如果数据中有很多0值,那怎么办?