Exemple de pointeur C
指针是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
。
基本上就这些核心用法。指针刚开始容易让人困惑,但只要记住:
多写几个例子练一练,很快就能掌握。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT
Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Installac compiler likeg usingpackageManagersordevelopmentToolsDenpeningSontheos.2.writeac programme etVeitwitha.cpppextension.3.compilethetrogramusingg hello.cpp-ohelotogenerateanexecuable.4

L'allocateur personnalisé peut être utilisé pour contrôler le comportement d'allocation de mémoire des conteneurs C. 1. Le journal de journalisation dans l'exemple implémente la journalisation de l'opération de mémoire en surchargeant l'allocation, la transmission, la construction et la détruire des méthodes; 2. L'allocateur doit définir des modèles Value_Type et Rebind pour répondre aux exigences de conversion du type de conteneur STL; 3. L'allocateur déclenche la sortie du journal pendant la construction et la copie, ce qui est pratique pour suivre le cycle de vie; 4. Les applications réelles incluent des pools de mémoire, de la mémoire partagée, des outils de débogage et des systèmes intégrés; 5. Depuis C 17, Construct and Destroy peut être traité par STD :: ALLOCATOR_TRAITS par défaut

Utilisez la fonction STD :: System () pour exécuter les commandes système, qui doivent inclure des fichiers d'en-tête et passer dans des commandes de chaîne de style C, telles que STD :: System ("LS-L"), et la valeur de retour est -1, ce qui signifie que le processeur de commande n'est pas disponible.

La réponse est de définir une classe qui contient les alias et les opérations de type nécessaire. Tout d'abord, définissez la valeur_type, référence, pointeur, différence_type et iterator_category, puis implémentez les opérations de déréférence, d'incrément et de comparaison. Enfin, fournissez des méthodes begin () et end () dans le conteneur pour renvoyer l'instance itérateur, ce qui le rend compatible avec les algorithmes STL et la plage pour les boucles.

Une classe abstraite est une classe contenant au moins une fonction virtuelle pure. Il ne peut pas être instancié et doit être hérité en tant que classe de base. La classe dérivée doit implémenter toutes ses fonctions virtuelles pures, sinon il sera toujours une classe abstraite. 1. Les fonctions virtuelles pures sont déclarées par le type de type de retour virtuel Nom () = 0; pour définir les spécifications de l'interface; 2. 3. Des destructeurs virtuels doivent être fournis pour les classes abstraites (telles que Virtual ~ Shape () = par défaut;) pour s'assurer que les objets de classe dérivés sont correctement libérés via des pointeurs de classe de base; 4. Une fois la classe dérivée héritée, les fonctions virtuelles pures doivent être réécrites, telles que le rectangle et le cercle pour implémenter la zone () pour calculer leurs zones respectives; 5

AstaticvariableInc conserve la valeur de l'entreprise entre la fonctionnalités et les étatsinitializedEnce.2

Les systèmes en temps réel nécessitent des réponses déterministes, car l'exactitude dépend du délai de livraison des résultats; Les systèmes durs en temps réel nécessitent des délais stricts, manqués entraînera des catastrophes, tandis que le temps réel doux permet des retards occasionnels; Des facteurs non déterministes tels que la planification, les interruptions, les caches, la gestion de la mémoire, etc. affectent le calendrier; Le plan de construction comprend la sélection des RTO, l'analyse WCET, la gestion des ressources, l'optimisation matérielle et les tests rigoureux.

Utilisez Std :: ifstream et STD :: ISTREAMBUF_ITERATOR pour lire efficacement le contenu entier du fichier vers les chaînes, y compris les espaces et les pauses de ligne, et convient aux fichiers texte de taille moyenne.
