C contoh penunjuk
指针是C++中用于存储内存地址的核心特性,1. 通过int ptr = &var定义指针并用ptr访问值;2. 函数通过指针参数可修改实参,实现类似引用传递;3. 使用new动态分配内存、delete释放内存,数组则用delete[];4. 需避免野指针、重复释放和内存泄漏,使用后应将指针置为nullptr。掌握取地址&、解引用*及内存管理规则是正确使用指针的关键。
指针是 C++ 中非常核心且强大的特性,它允许我们直接操作内存地址。下面通过一个简单、实用的例子来说明指针的基本用法。

1. 基本指针定义与使用
#include <iostream> using namespace std; int main() { int var = 10; // 普通变量 int *ptr = &var; // 定义指针,指向 var 的地址 cout << "变量 var 的值: " << var << endl; // 输出 10 cout << "var 的地址: " << &var << endl; // 输出地址,比如 0x7fff... cout << "指针 ptr 存储的地址: " << ptr << endl; // 输出相同地址 cout << "指针 ptr 指向的值: " << *ptr << endl; // 输出 10,*ptr 是解引用 // 修改指针指向的值 *ptr = 20; cout << "修改后 var 的值: " << var << endl; // 输出 20 return 0; }
说明:
&var
:取变量 var 的内存地址。int *ptr
:声明一个指向整型的指针。*ptr
:解引用操作,获取指针所指向地址中的值。
2. 指针与函数(通过指针传参修改实参)
void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int x = 5, y = 10; cout << "交换前: x = " << x << ", y = " << y << endl; swap(&x, &y); // 传入地址 cout << "交换后: x = " << x << ", y = " << y << endl; return 0; }
输出:

交换前: x = 5, y = 10 交换后: x = 10, y = 5
重点:
- 函数参数使用指针,可以修改主函数中的原始变量。
- 这是“按引用传递”的底层实现方式之一。
3. 动态内存分配(new 和 delete)
int main() { int *p = new int; // 动态分配一个 int 空间 *p = 100; cout << "动态分配的值: " << *p << endl; delete p; // 释放内存 p = nullptr; // 避免悬空指针 // 分配数组 int *arr = new int[5]; for (int i = 0; i < 5; ++i) { arr[i] = i * 10; } cout << "数组内容: "; for (int i = 0; i < 5; ++i) { cout << arr[i] << " "; } cout << endl; delete[] arr; // 释放数组 arr = nullptr; return 0; }
注意:

new
分配内存,delete
释放单个对象,delete[]
释放数组。- 使用后将指针设为
nullptr
,防止误用。
4. 常见错误提醒
野指针:指向未知地址的指针。
int *p; *p = 10; // 错误!p 没有初始化
重复释放内存
delete p; delete p; // 危险!已释放的内存不能再 delete
忘记释放内存:导致内存泄漏。
- 指针存的是地址;
-
*
是解引用; -
&
是取地址; - 动态分配要配对
new/delete
。
基本上就这些核心用法。指针刚开始容易让人困惑,但只要记住:
多写几个例子练一练,很快就能掌握。
Atas ialah kandungan terperinci C contoh penunjuk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Installac compilerLikeg menggunakan packPackageManagersordevelopmenttoolsdependingontheos.2.writeaceac programAndSaveitwitha.cppextension.3.compiletheprogramusingg

Gunakan fungsi STD :: () untuk melaksanakan arahan sistem, yang perlu memasukkan fail header dan lulus dalam arahan rentetan gaya C, seperti STD :: System ("LS-L"), dan nilai pulangan adalah -1, yang bermaksud bahawa pemproses arahan tidak tersedia.

Peruntukan adat boleh digunakan untuk mengawal tingkah laku peruntukan memori bekas C. 1. LoggingAllocator dalam contohnya melaksanakan pembalakan operasi memori dengan memaksimumkan memperuntukkan, menangani, membina dan memusnahkan kaedah; 2. Peruntukan perlu menentukan template value_type dan rebind untuk memenuhi keperluan penukaran jenis kontena STL; 3. Peruntukan mencetuskan output log semasa pembinaan dan penyalinan, yang mudah untuk menjejaki kitaran hayat; 4. Aplikasi sebenar termasuk kolam memori, memori bersama, alat debugging dan sistem tertanam; 5. Sejak C 17, membina dan memusnahkan dapat diproses oleh std :: allocator_traits secara lalai

Jawapannya adalah untuk menentukan kelas yang mengandungi alias dan operasi jenis yang diperlukan. Pertama, tetapkan value_type, rujukan, penunjuk, perbezaan_type dan iterator_category, kemudian melaksanakan operasi dereference, kenaikan dan perbandingan. Akhirnya, sediakan kaedah Begin () dan akhir () dalam bekas untuk mengembalikan contoh Iterator, menjadikannya serasi dengan algoritma STL dan julat untuk gelung.

Sistem masa nyata memerlukan tindak balas deterministik, kerana ketepatan bergantung pada masa penghantaran hasil; Sistem masa nyata yang sukar memerlukan tarikh akhir yang ketat, terlepas akan membawa kepada bencana, sementara masa nyata yang lembut membolehkan kelewatan sekali-sekala; Faktor-faktor yang tidak ditentukan seperti penjadualan, gangguan, cache, pengurusan memori, dan lain-lain mempengaruhi masa; Pelan pembinaan termasuk pemilihan RTO, analisis WCET, pengurusan sumber, pengoptimuman perkakasan dan ujian yang ketat.

Kelas abstrak adalah kelas yang mengandungi sekurang -kurangnya satu fungsi maya murni. Ia tidak boleh ditandakan dan mesti diwarisi sebagai kelas asas. Kelas yang diperolehi perlu melaksanakan semua fungsi maya murni, jika tidak, ia masih akan menjadi kelas abstrak. 1. Fungsi maya murni diisytiharkan dengan nama fungsi jenis pulangan maya () = 0; untuk menentukan spesifikasi antara muka; 2. Kelas abstrak sering digunakan untuk reka bentuk antara muka bersatu, seperti kawasan (), lukis (), dan lain -lain, untuk melaksanakan panggilan polimorfik; 3. Pemusnah maya mesti disediakan untuk kelas abstrak (seperti bentuk ~ maya () = lalai;) untuk memastikan bahawa objek kelas yang diperolehi dilepaskan dengan betul melalui penunjuk kelas asas; 4. Selepas kelas yang diperolehi, fungsi maya murni mesti ditulis semula, seperti segi empat tepat dan bulatan untuk melaksanakan kawasan () untuk mengira kawasan masing -masing; 5.

Gunakan std :: ifstream dan std :: istreambuf_iterator untuk membaca keseluruhan kandungan fail ke rentetan, termasuk ruang dan rehat garis, dan sesuai untuk fail teks bersaiz sederhana.

AstaticvariableinC retainsitsvaluebetweenfunctioncallsandisinitializedonce.2.Insideafunction,itpreservesstateacrosscalls,suchascountingiterations.3.Inaclass,itissharedamongallinstancesandmustbedefinedoutsidetheclasstoavoidlinkingerrors.4.Staticvaria
