Seperti yang telah disebutkan orang lain, dalam C Anda akan menggunakan memcpy. Namun perlu diperhatikan bahwa ini melakukan salinan memori mentah, jadi jika struktur data Anda memiliki penunjuk ke dirinya sendiri atau satu sama lain, penunjuk dalam salinan akan tetap mengarah ke objek asli.
Dalam C ++ Anda juga dapat menggunakan memcpyjika anggota array anda POD (yaitu, pada dasarnya jenis yang Anda bisa juga digunakan tidak berubah di C), tetapi secara umum, memcpyakan tidak diizinkan. Seperti yang disebutkan orang lain, fungsi yang akan digunakan adalah std::copy.
Karena itu, di C ++ Anda jarang harus menggunakan array mentah. Sebagai gantinya Anda harus menggunakan salah satu wadah standar ( std::vectorpaling dekat dengan array built-in, dan saya pikir yang paling dekat dengan array Java - lebih dekat daripada array C ++ biasa, memang -, tetapi std::dequeatau std::listmungkin lebih tepat dalam beberapa kasus) atau, jika Anda menggunakan C ++ 11, std::arrayyang sangat dekat dengan larik bawaan, tetapi dengan semantik nilai seperti tipe C ++ lainnya. Semua jenis yang saya sebutkan di sini dapat disalin berdasarkan tugas atau konstruksi salinan. Selain itu, Anda dapat "menyalin silang" dari opne ke yang lain (dan bahkan dari array bawaan) menggunakan sintaks iterator.
Ini memberikan gambaran umum tentang kemungkinan (saya menganggap semua tajuk yang relevan telah disertakan):
int main()
{
int a[] = { 1, 2, 3, 4 };
int b[4];
memcpy(b, a, 4*sizeof(int));
std::copy(a, a+4, b);
std::copy(std::begin(a), std::end(a), std::begin(b));
std::vector<int> va(a, a+4);
std::vector<int> vb = va;
std::vector<int> vc { 5, 6, 7, 8 };
vb = vc;
vb.assign(vc.begin(), vc.end());
std::vector<int> vd;
std::copy(va.begin(), va.end(), std::back_inserter(vd));
std::copy(a, a+4, vd.begin());
std::array<int, 4> sa = { 9, 10, 11, 12 };
std::array<int, 4> sb = sa;
sb = sa;
}
man memmovedanman memcpy