
上期回顾: 【C++】内存管理和内存优化
个人主页:C_GUIQU
归属专栏:C++

目录
正文
1. 指针
1.1 指针的基本概念
指针是一种变量,它存储的是另一个变量的内存地址。通过指针,可以间接访问和操作其所指向的变量。
1.2 举例
#include <iostream>
int main() {
int num = 10; // 定义一个整型变量num,初始值为10
int *ptr; // 定义一个指向整型的指针ptr,此时它未指向任何有效的内存地址
ptr = # // 将指针ptr指向变量num的地址,&是取地址运算符
std::cout << "num的值为:" << num << std::endl;
std::cout << "num的地址为:" << &num << std::endl;
std::cout << "ptr指向的值为:" << *ptr << std::endl; // *是解引用运算符,用于获取指针所指向的值
std::cout << "ptr的地址为:" << &ptr << std::endl;
return 0;
}
在上述代码中:
- 首先定义了一个整型变量
num并赋值为10。 - 接着定义了一个整型指针
ptr,开始它未指向任何有效地址。 - 通过
ptr = #将ptr指向了num的地址。 - 然后分别输出了
num的值、地址,ptr指向的值(通过解引用*ptr)以及ptr自身的地址。
1.3 指针的运算
指针可以进行一些特定的运算,常见的有算术运算和关系运算。
1.3.1 算术运算
- 指针的加法和减法运算通常与它所指向的数据类型的大小相关。例如,对于一个指向整型(
int)的指针,如果执行ptr++,那么指针会移动到下一个整型数据的地址,实际上是在内存地址上增加了sizeof(int)个字节。
示例代码:
#include <iostream>
int main() {
int arr[5] = {
1, 2, 3, 4, 5};
int *ptr = arr; // 让指针ptr指向数组arr的首地址
std::cout << "ptr指向的元素为:" << *ptr << std::endl;
ptr++; // 指针向后移动一个元素的位置
std::cout << "ptr指向的元素为:" << *ptr << std::endl;
return 0;
}
在这个例子中,数组 arr 包含了 5 个整型元素。指针 ptr 初始指向数组的首地址,即 arr[0] 的地址。当执行 ptr++ 后,指针就指向了 arr[1] 的地址,通过解引用就可以获取到 arr[1] 的值。
1.3.2 关系运算
- 指针可以进行比较运算,如
==、!=、<、>等。通常用于判断两个指针是否指向同一个地址,或者判断一个指针是否在某个地址范围之内。
示例代码:
#include <iostream>
int main() {
int num1 = 10;
int num2 = 20;
int *ptr1 = &num1;
int *ptr2 = &num2;
if (ptr1 == ptr2) {
std::cout << "ptr1和ptr2指向同一个地址" <<

最低0.47元/天 解锁文章
587

被折叠的 条评论
为什么被折叠?



