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
。
基本上就这些核心用法。指针刚开始容易让人困惑,但只要记住:
多写几个例子练一练,很快就能掌握。
위 내용은 C 포인터 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Stock Market GPT
더 현명한 결정을 위한 AI 기반 투자 연구

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

InstallaC compilerlikeg usingpackagemanagersordevelopmenttoolsdependingontheOS.2.WriteaC programandsaveitwitha.cppextension.3.Compiletheprogramusingg hello.cpp-ohellotogenerateanexecutable.4.Runtheexecutablewith./helloonLinux/macOSorhello.exeonWi

Custom 할당자를 사용하여 C 컨테이너의 메모리 할당 동작을 제어 할 수 있습니다. 1. 예제의 LoggingAllocator는 할당, 거래, 구성 및 방법을 오버로드하여 메모리 작동 로깅을 구현합니다. 2. 할당자는 STL 컨테이너 유형 변환 요구 사항을 충족시키기 위해 value_type 및 Rebind 템플릿을 정의해야합니다. 3. 할당자는 시공 및 복사 중에 로그 출력을 트리거하며, 이는 수명주기를 추적하기에 편리합니다. 4. 실제 애플리케이션에는 메모리 풀, 공유 메모리, 디버깅 도구 및 임베디드 시스템이 포함됩니다. 5. C 17 이후로 구성 및 파괴는 기본적으로 std :: allocator_traits에 의해 처리 될 수 있습니다.

STD :: SYSTEM () 함수를 사용하여 System 명령을 실행하고 System 명령을 실행하고 STD :: SYSTEM ( "LS-L")과 같은 C 스타일 문자열 명령을 전달해야하며 리턴 값은 -1이므로 명령 프로세서를 사용할 수 없습니다.

답은 필요한 유형 별칭 및 작업이 포함 된 클래스를 정의하는 것입니다. 먼저, value_type, 참조, 포인터, Different_type 및 iterator_category를 설정 한 다음 Dereference, ycrement 및 비교 작업을 구현하십시오. 마지막으로, 컨테이너에 시작 () 및 end () 메소드를 제공하여 반복자 인스턴스를 반환하여 STL 알고리즘 및 루프의 범위와 호환됩니다.

추상 클래스는 하나 이상의 순수한 가상 함수를 포함하는 클래스입니다. 인스턴스화 할 수 없으며 기본 클래스로 상속되어야합니다. 파생 클래스는 모든 순수한 가상 함수를 구현해야하며, 그렇지 않으면 여전히 추상 클래스가됩니다. 1. 순수한 가상 함수는 가상 반환 유형 함수 이름 () = 0으로 선언됩니다. 인터페이스 사양을 정의하기 위해; 2. 초록 클래스는 종종 다형성 호출을 구현하기 위해 area (), draw () 등과 같은 통합 인터페이스 설계에 사용됩니다. 3. 가상 파괴자는 추상 클래스 (예 : Virtual ~ shape () = 기본값;)에 제공되어 기본 클래스 포인터를 통해 파생 클래스 객체가 올바르게 릴리스되도록해야합니다. 4. 파생 클래스 상속 후, 사각형 및 원과 같은 순수한 가상 함수를 다시 작성하여 각 영역을 계산하기 위해 영역 ()을 구현해야합니다. 5.

AstaticVariableinc는 indainsvaluebetsweenfunctioncallsandisinitializedonce.2.insideafunction, itpreservesstateacrosscalls, suchascountingiterations.3.inaclass, itissharedamongallinstancesand mustedefinedoupedoutsideclasstoavoidingerrors.4.4

실시간 시스템은 결과 전달 시간에 달려 있기 때문에 결정 론적 응답이 필요합니다. 하드 실시간 시스템은 엄격한 마감일이 필요하고, 누락 된 경우, 부드러운 실시간은 때때로 지연을 허용합니다. 스케줄링, 인터럽트, 캐시, 메모리 관리 등과 같은 비 결정적 요인 등은 타이밍에 영향을 미칩니다. 건설 계획에는 RTO, WCET 분석, 리소스 관리, 하드웨어 최적화 및 엄격한 테스트 선택이 포함됩니다.

std :: ifstream 및 std :: istreambuf_iterator를 사용하여 파일의 전체 내용을 공백 및 라인 브레이크를 포함하여 문자열에 효율적으로 읽고 중간 크기의 텍스트 파일에 적합합니다.
