C++中,指针是一种非常强大的特性,它允许你直接访问和操作内存。以下是一些基本的指针用法:
声明指针:
int *ptr; // 声明一个指向int类型的指针
初始化指针:
int a = 10;
int *ptr = &a; // 指针指向变量a的地址
指针解引用:
int value = *ptr; // 通过指针获取它所指向的值
指针运算:
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr; // 指针指向数组的第一个元素
int nextValue = *(ptr + 1); // 访问数组的第二个元素
指针与数组:
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr; // 指向数组的第一个元素
for (int i = 0; i < 5; ++i) {std::cout << *(ptr + i) << " "; // 通过指针访问数组元素
}
动态内存分配:
int *ptr = new int; // 在堆上分配一个int
*ptr = 10; // 设置值
delete ptr; // 释放内存
动态数组分配:
int *arr = new int[5]; // 在堆上分配一个int数组
for (int i = 0; i < 5; ++i) {arr[i] = i + 1;
}
delete[] arr; // 释放数组内存
指针与函数:
void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}
指针与const:
const int *ptr; // 指针指向一个常量值,不能通过这个指针修改值
int *const ptr = &a; // 指针本身的值不能改变,只能指向a
const int *const ptr = &a; // 指针指向一个常量值,且指针本身的值也不能改变
指针与引用:
int a = 10;
int &ref = a; // 引用
int *ptr = &a; // 指针
指针与void:
void *ptr; // 指向任意类型的指针
int a = 10;
ptr = &a; // 可以指向任意类型
指针与nullptr:
int *ptr = nullptr; // 初始化指针为nullptr
指针与结构体:
struct Person {std::string name;int age;
};
Person *ptr = new Person; // 动态分配结构体
ptr->name = "Kimi";
ptr->age = 30;
delete ptr; // 释放内存
指针与类:
class MyClass {
public:void myMethod() {std::cout << "Hello, World!" << std::endl;}
};
MyClass *ptr = new MyClass();
ptr->myMethod(); // 调用方法
delete ptr; // 释放内存