请教例程程序空间的字符串复制到外部RAM中问题,我看不懂

/* 将程序空间的字符串复制到外部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值,那怎么办?

你的理解是正确的, 但是字符串都是以数字0结尾的。 字符串里面的0 是字符'0'(对应的ASCII码是0X30),而不是数字0(0x00);


只有登录才能回复,可以选择微信账号登录