【求助】下面代码为什么要分别用数组和指针?
小弟最近在看VxWorks的启动代码,其中有个函数将地址范围是buf~buf+nlongs填充为val。原代码如下:
LOCAL void fillLongs (buf, nlongs, val)
FAST UINT *buf; /* pointer to buffer */
UINT nlongs; /* number of longs to fill */
FAST UINT val; /* char with which to fill buffer */
{
FAST UINT *bufend = buf + nlongs;
FAST UINT nchunks;
/* Hop by chunks of longs, for speed. */
for (nchunks = nlongs / 8; nchunks; --nchunks)
{
#if (CPU_FAMILY == MC680X0)
*buf++ = val; /* 0 */
*buf++ = val; /* 1 */
*buf++ = val; /* 2 */
*buf++ = val; /* 3 */
*buf++ = val; /* 4 */
*buf++ = val; /* 5 */
*buf++ = val; /* 6 */
*buf++ = val; /* 7 */
#else
buf[0] = val;
buf[1] = val;
buf[2] = val;
buf[3] = val;
buf[4] = val;
buf[5] = val;
buf[6] = val;
buf[7] = val;
buf += 8;
#endif /* CPU_FAMILY == MC680X0 */
}
/* Do the remainder one long at a time. */
while (buf < bufend)
*buf++ = val;
}
问题:为什么要区分CPU类型,然后一种用指针形式赋值,另外一种用数组形式赋值?感觉用哪一种方法都无所谓的。求大神解释!