我认为不使用循环移动数值以达到交换的目的,而只是交换地址,这样是不可能的。
因为数组在内存中是顺序存储的,使用时既可以用a[i][j],i++,j++配合,也可以用
*(*(a+i)+j),i++,j++配合使用,++代表的就是内存地址按int类型长度增加,这跟链表不同,
链表在内存中存储不是顺序的,但有变量指出下一个节点的地址。交换链表的顺序实际就是交换链
表下一个节点地址。但数组不同,数组在内存中顺序存储,如果交换一二行的行指针(具体怎么
做我也不会),那么内存中存储的数据并没有变动(我们暂且称之为原来的数据),但数组首地址
a变为指向原来的数据第二行,如果按++来访问数组,那么极有可能的情况是,交换后的原来的数
据第一行不会出现,因为按首地址来进行++,则从原来的数据第二行开始遍历,到行尾时,并没有任
何变量指出下一个数据的地址是原来数据的第一行,而是直接按++来到原来数据的第三行,最后,
到数组末尾时还会发生越界。int型数组没有strcpy之类的函数调用,所以除非使用循环移动,没有别的办法。
总之一句话,循环是必须要有的。