IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 一文带你彻底搞懂C++中一些常见指针(形如*p)的用法 -> 正文阅读

[C++知识库]一文带你彻底搞懂C++中一些常见指针(形如*p)的用法

提高指针效率以及程序可读性

为什么要后置运算符?

有C语言编程经验的人可能会感到疑问,为什么在C++里面我们推荐优先使用运算符的前置版本,就是把运算符号放在变量的前面,前置版本的递增避免了不必要的工作,它将值加一后直接返回了,而如果你后置运算符,它会把原始值存储下来以便于返回这个未修改的值。

简洁可以成为一种美德

cout<<*ip++<<endl;
cout<<*ip<<endl;
++*ip;

表达的意思都是一样的,大多数C++程序追求简洁

什么是指针

数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量。

指针表达

#include <iostream>

using namespace std;

int main () {
   int  var = 20;   // actual variable declaration.
   int  *ip;        // pointer variable 

   ip = &var;       // store address of var in pointer variable

   cout << "Value of var variable: ";
   cout << var << endl;

   // print the address stored in ip pointer variable
   cout << "Address stored in ip variable: ";
   cout << ip << endl;

   // access the value at the address available in pointer
   cout << "Value of *ip variable: ";
   cout << *ip << endl;

   return 0;
}

输出如下:

$g++ -o main *.cpp
$main
Value of var variable: 20
Address stored in ip variable: 0x7ffe8c789054
Value of *ip variable: 20

var前面加上了取地址符号,采用拷贝赋值的方式给ip,此时ip代表的就是存放var的地址。

符号含义
*p我对你地址是多少不关心,我关心的是你里面存放的内容
p我对你里面的内容不关心,我关心的是你的地址

这里我们在和上文中提到的运算符号结合,做一个延伸

符号含义
* (++p)与*p++将指针的值加一后在去探寻地址里面到底放了什么东西
++(*p)将地址里面放的东西的值加1

值得一提的是,我们在C++里要尽可能使用运算符号前置来提高程序运行的效率

指针与const

const指针(底层const)

指针不仅可以指向变量,也可以指向常量const,指向常量的指针不能改变所指对象的值,但指针自己的值却可以改变(即指向别的地方)

顶层指针

指针自己就是一个常量,但这并不意味着它不能改变所指对象的值,就好比你有一把唯一的钥匙去打开唯一的一扇门,不能打开其他的门,但只要你打开了这扇门,你就可以修改里面的东西了。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 15:53:52  更:2022-01-03 15:55:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:48:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码