Rumah > pembangunan bahagian belakang > C++ > Bila Perlu Melalui Rujukan atau Penunjuk dalam C : Prinsip Panduan?

Bila Perlu Melalui Rujukan atau Penunjuk dalam C : Prinsip Panduan?

Patricia Arquette
Lepaskan: 2024-11-12 16:31:01
asal
836 orang telah melayarinya

When to Pass by Reference or Pointer in C  : A Guiding Principle?

Melalui Rujukan atau Penunjuk dalam C : Prinsip Panduan

Dalam C , memahami bila menggunakan rujukan lulus dan bila menggunakan penunjuk adalah penting. Amalan ini boleh membawa kepada kod yang cekap dan bebas ralat.

Situasi Umum

  • Meluluskan std::string ke fungsi:

    • foo(std::string*) atau foo(std::string&)?
  • Meluluskan tr1::shared_ptr ke fungsi:

    • foo(tr1::shared_ptr* ptr ) atau foo(tr1::shared_ptr& ptr)?

Petunjuk lwn. Rujukan

Melalui rujukan menawarkan ketekalan, kerana setiap objek boleh dianggap sebagai rujukan. Walau bagaimanapun, melalui penuding memberikan fleksibiliti untuk mengendalikan nullptrs dan literal.

Analisis Coretan

Coretan yang diberikan:

map<string, shared_ptr<vector<string>> > adjacencyMap;
vector<string>* myFriends = new vector<string>();
myFriends->push_back(string("a"));
myFriends->push_back(string("v"));
myFriends->push_back(string("g"));
adjacencyMap["s"] = shared_ptr<vector<string> >(myFriends);
Salin selepas log masuk

menyerlahkan keperluan untuk mempertimbangkan sifat kedua-dua rujukan dan petunjuk:

  • The kekunci peta menggunakan rujukan, menjamin kecekapan memori.
  • Penunjuk vektor membenarkan peruntukan dinamik, memudahkan penambahan vektor.

Peraturan Ibu Jari

Akhirnya, pilihan yang sesuai bergantung pada keperluan khusus. Sebagai prinsip panduan, pertimbangkan:

  • Gunakan rujukan: Untuk penggunaan memori yang cekap dan apabila anda telah menjamin akses kepada objek yang dirujuk.
  • Gunakan petunjuk: Apabila mengendalikan nullptrs, bekerja dengan memori dinamik atau apabila anda perlu mengubah suai rujukan sendiri.

Atas ialah kandungan terperinci Bila Perlu Melalui Rujukan atau Penunjuk dalam C : Prinsip Panduan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan