通过简单地使用指向它中间的指针来拆分C数组是不好的做法吗?

Sha*_*ane 8 c arrays malloc pointers

我在c中实现了一个合并排序版本.对于第一步,我必须将数组拆分为子数组.

通过使用两个指针来简单地执行此操作是不好的做法,一个指向原始数组的开头而第二个指向中间?

或者我应该malloc 2个新的内存插槽,在这里复制适当的值,然后保持指向这个空间的指针?

Luc*_*ore 12

如果你知道自己在做什么,我认为这不是一种不好的做法.在某些情况下,您牺牲了可读性以提高效率.如果你只是再创建两个数组,可能会更清楚,但如果你对数组和指针有一个牢固的把握,为什么要分配额外的内存呢?

  • 另一方面,如果你不知道你在做什么,用C做任何事都是不好的做法. (6认同)
  • @LuchianGrigore,你的意思是`printf("%s \n");`? (2认同)

hug*_*omg 11

绝对不!C编程的全部要点是能够做这些整洁的指针技巧!

但请注意,mergesort不在原位,因此您仍需要malloc辅助数组.如果你做了正确的指针技巧,你可以只使用malloc一次并重用它.