C 为什么交换指针比复制字符串数组的内容更有效?

C 为什么交换指针比复制字符串数组的内容更有效?,c,pointers,copy,compare-and-swap,C,Pointers,Copy,Compare And Swap,我最近发现了一条评论,它被认为是关于交换字符串数组内容的最佳答案,但是我不太明白为什么使用strncpy或strcpy之类的函数交换比交换指针效率低 附言:我知道询问给出最佳答案的用户更有意义,但是我还没有足够的信誉点。strcpy和strncpy将每个字节从一个内存位置复制到另一个内存位置。要交换内容,您必须执行3次:firstString到tempBuffer,secongString到firstString,然后buffer到secondString,这显然不是真正有效的。 但是如果操作指

我最近发现了一条评论,它被认为是关于交换字符串数组内容的最佳答案,但是我不太明白为什么使用
strncpy
strcpy
之类的函数交换比交换指针效率低


附言:我知道询问给出最佳答案的用户更有意义,但是我还没有足够的信誉点。

strcpy和strncpy将每个字节从一个内存位置复制到另一个内存位置。要交换内容,您必须执行3次:firstString到tempBuffer,secongString到firstString,然后buffer到secondString,这显然不是真正有效的。 但是如果操作指针,则只需对指针(而不是全部内容)进行置换


换句话说,如果firstString+secondString的总大小大于指针大小的两倍(通常为2x4字节,但取决于处理器体系结构),strcpy方法的效率就会降低。

想想要复制多少字节。我不必担心,因为在我的情况下,目标是,总是比来源大,我不是这个意思。交换内容与交换指针时,可能交换的字节数是多少?内容可能交换的字节数通常与指针交换的字节数不同吗?指针的大小是固定的(通常为4或8个字节)。交换两个指针可能比交换两个任意大数组的内容快。更少的字节意味着更少的工作…而且你不能保证一个字符串能容纳另一个字符串的分配空间,