C/C++备忘录(二):指针基础
2022/1/30 17:06:37
本文主要是介绍C/C++备忘录(二):指针基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、基本概念
- 作用:可以通过指针间接访问内存
- 所有指针类型在32位操作系统下都是占用4个字节
- 指针保存的是地址
- 空指针:指针变量指向内存中编号为0的空间
空指针指向的内存不可访问
int * p = NULL; - 内存编号0 ~ 255位系统占用内存,均不允许用户访问
二、定义与使用
1. 一级指针
int a = 10; //* 表示解引用 //方法1 int * p = NULL; //point 一般置为空指针,后续再给指向 p = &a; //&为取地址符 //方法2 int * p = &a; a = 10 &a = 0XA0 //a的地址,这个地址是我们假设的 p = 0XA0 //p存放的是a的地址 &p = 0XB0 //指针p自身的地址 *p = 10 //将p解引用,获得p指向的值,即a值 拓展: &(*p) = 0XA0
原理
2. 二级指针
int a = 10; int *p1 = &a; int **p2 = &p1; a = 10 &a = 0XA0 p1 = 0XA0 *p1 = 10 &p1 = 0XB0 p2 = 0XB0 *p2 = 0XA0 **p2 = 10 &p2 = 0XC0 **p2理解为 *(*p2),就是对p2指向的再一次解引用 由此可见,多次指针相当于连续套娃,每层指针指向上一层
原理
3.简单应用
void test1(int *p){ cout << p << " " << *p; } void test2(int **p){ cout << p << " " << **p; } int main(){ int *p1 = NULL; int a = 10; p1 = &a; test(p1); int **p2 = &p1; test(p2); //或者 test(&p1); }
三、const修饰指针
const修饰指针有三种情况
- const修饰指针 — 常量指针
- const修饰常量 — 指针常量
- const即修饰指针,又修饰常量
int a = 10; int b = 10; //const修饰的是指针,指针指向可以改,指针指向的值不可以更改 const int * p1 = &a; p1 = &b; //正确 //*p1 = 100; 报错 //const修饰的是常量,指针指向不可以改,指针指向的值可以更改 int * const p2 = &a; //p2 = &b; //错误 *p2 = 100; //正确 //const既修饰指针又修饰常量 const int * const p3 = &a; //p3 = &b; //错误 //*p3 = 100; //错误 }
技巧:看const右侧紧跟着的是指针还是常量, 是指针就是常量指针,是常量就是指针常量
这篇关于C/C++备忘录(二):指针基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-29Elasticsearch慢查询日志配置
- 2024-05-29揭秘华为如此多成功项目的产品关键——Charter模板
- 2024-05-29海外IDC业务拓展的7大挑战
- 2024-05-29InLine Chat功能优化对标Github Copilot,CodeGeeX带来更高效、更直观的编程体验!
- 2024-05-29CodeGeeX 智能编程助手 6 项功能升级,在Visual Studio插件市场霸榜2周!
- 2024-05-29AutoMQ 生态集成 Apache Doris
- 2024-05-292024年IDC行业的深度挖掘:机遇、挑战与未来展望
- 2024-05-29五款扩展组件齐发 —— Volcano、Keda、Crane-scheduler 等,邀你体验
- 2024-05-29AutoMQ 对象存储数据高效组织的秘密: Compaction
- 2024-05-29活动预告|来 GIAC 大会听大数据降本利器:AutoMQ 基于云原生重新设计的 Kafka