首先,对于前四个问题,您的理解都是正确的,即i和j可以视为指向a和b数组下标用于遍历的指针,然后不断对比来取较小值存到新序列c中。
接下来重点说明第五个:
我们要明白,数组变量(如题中的a,b,c)本质是一个指向数组头位置的指针,而数组就是连续的一段位置,所以,如果变量不加下标则表示指针。
按照这题的例子,a就表示a的第一个元素(即a[0])的指针,我们可以理解为a=a+0=&a[0]
所以a+i就表示a[0]往后i个位置的指针,即a+i=&a[i]
理解了这个之后,我们就可以理解这个程序了
语句p=a+i表示将a[i]的地址存入p中
这里的“+”其实就是将指针地址的值增加的意思,在数组中表示下标往后加。
然后用strcat(c,p)将p指针所指向的内容(即a[i])接到c后面,其实这相当于是将a[i]的值放入数组c后面,而数组c的结尾('\0')在k位置,所以这一系列操作的作用其实相当于是a[i]=c[k],只不过使用指针完成而已(b那个同理)。
附:strcat(char *a,char *b)的作用是将b的内容接到a后面连成新字符串并存入a中。
纯手打,望采纳,谢谢。