秒懂百科,C++如此简单丨第十五天:指针

news2024/9/24 17:12:12

目录

必看信息

Everyday English

前言 

📝了解指针

📝定义指针

📝分析指针

📝运用指针

总结


必看信息

▶本篇文章由爱编程的小芒果原创,未经许可,严禁转载。

▶本篇文章被收录于秒懂百科,C++如此简单专栏,欢迎订阅。

专栏亮点

1.每篇文章质量高,质量分保证在80分以上。

2.文章的内容清晰有条理,图文并茂,附有yuan。

3.每个知识点讲解详细,会有很多补充扩展。

4.若哪个知识点没有懂,可以私信我,我会尽可能地帮助你。

Everyday English

"The only thing we can do is to do our best and not worry about the future." - Confucius

我们唯一能做的就是尽全力,不为未来担忧。- 孔子

前言 

在计算机科学中,指针是一个重要的概念,尤其在诸如C和C++等语言中。指针允许我们直接访问和操作内存地址,提供了强大的数据处理能力。理解指针对于深入理解计算机工作原理以及解决复杂问题至关重要。 

📝了解指针

首先,我们来看什么是变量。在计算机编程中,变量是一个存储空间,用来保存一些值。每个变量都有一个名称,通过这个名称我们可以访问它的值。变量最直白的理解就是:变化的值

然后,我们来看指针。指针其实也是一个变量,但它存储的不是一个具体的值,而是一个地址。这个地址指向另一个变量的位置。所以,当我们说一个指针指向一个变量时,意思是这个指针存储的是那个变量的内存地址。

在C++中,我们用“*”这个符号来表示一个变量是指针。比如,“int *p”这个声明,意思是“p”是一个指向整数的指针。

📝定义指针

首先我们要生命一下指针,数据类型你可以根据需要去修改

int *p;//声明一个整型指针

然后我们可以初始化这个指针,让它指向一个特定的内存地址,我们可以让p指向一个整数值:

int val=10;  
ptr = &val;//个人建议把指针前后可以空一格,看得更舒服美观

这里的“&”符号用于获取变量的内存地址,学过C语言的朋友们应该清楚,scanf语句需要用到“&”:

int n;
scanf("%d",&n);

一旦我们有了指向某个变量的指针,我们就可以通过指针来访问和修改变量的值。例如,我们可以使用“*”符号来获取指针指向的变量的值:

int val = 10;  
int *p = &val;  
cout<<"The value is:"<<*p<<endl;

分析上述代码,首先我们定义val=10,而指针p访问并获取了val的值,所以输出应该是:

指针还可以修改变量的值,如:

int val = 10;  
int *p = &val;  
*p=25;
cout<<"The value is:"<<*p<<endl;

因为*p的值改变成了25,所以输出理所当然是:

📝分析指针

指针的利:

  1. 动态内存管理: 指针可以用于动态内存分配,这在处理大量数据或需要根据运行时情况调整内存使用时非常有用。
  2. 数据共享与修改: 通过指针,多个函数或对象可以共享和修改同一内存地址中的数据,有助于实现更高效的数据共享和同步。
  3. 提高性能: 在某些情况下,使用指针可以直接访问内存,可能比常规变量访问更快。

指针的弊:

  1. 增加复杂性: 指针和指针操作增加了代码的复杂性,可能导致阅读和理解代码的难度增加。
  2. 安全风险: 不正确的指针操作可能导致缓冲区溢出、越界访问等安全问题,可能被利用进行攻击。
  3. 性能开销: 在某些情况下,不恰当的指针使用可能导致额外的内存访问和处理器开销。

时间复杂度:

当指针执行赋值运算时,复杂度为O(1)

📝运用指针

题目:交换两个变量的值

题目描述:给定两个变量a和b,请使用指针来交换它们的值。

要求:只能使用指针进行交换,不能使用其他变量或直接赋值。

思路点拨:

  1. 定义两个指针变量,分别指向变量a和b的地址。
  2. 使用指针修改变量的值,将a的值赋给b的地址所指向的变量,将b的值赋给a的地址所指向的变量。(可以用我们之前学过的交换函数,也可以写一个临时变量tmp)

AC代码:

#include<bits/stdc++.h>  
using namespace std;
void swap(int *a,int *b) 
{  
    int tmp = *a;  //将a的值存储到临时变量temp中  
    *a = *b;       //将b的值赋给a的地址所指向的变量  
    *b = tmp;      //将临时变量temp(原a的值)赋给b的地址所指向的变量  
}  
int main() 
{  
    int a=5,b=10;  //值可以自己修改 
    cout<<"交换前:a="<<a<<",b="<<b<<endl;
    swap(&a, &b);
	cout<<"交换后:a="<<a<<",b="<<b<<endl; 
    return 0;  
}

运行截图:

总结

本篇文章讲解了指针的运用及定义,欢迎大家指出错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1364831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络层协议及IP编址

0x00 前言 本节为网络层协议及IP编址内容 IP地址的范围&#xff1a;0.0.0.0-255.255.255.255 IP分为网络位以及主机位。子网划分就是向主机位借位。 网络层协议 IPICMP&#xff08;internet Control message protocol&#xff09;IPX IP协议的作用 为网络层的设备提供逻…

2023湾区产城创新大会:培育数字化供应链金融新时代

2023年12月26日&#xff0c;由南方报业传媒集团指导&#xff0c;南方报业传媒集团深圳分社主办的“新质新力——2023湾区产城创新大会”在深圳举行。大会聚集里国内产城研究领域的专家学者以及来自产业园区、金融机构、企业的代表&#xff0c;以新兴产业发展为议题&#xff0c;…

【计算机网络】网络基础--协议/网络协议/网络传输流程/地址管理

文章目录 一、计算机网络背景二、协议1.协议是什么2.为什么要有协议 三、网络协议1.为什么要进行协议分层2.OSI七层模型3.TCP/IP五层(或四层)模型 四、网络传输基本流程1.协议报头2.局域网3.数据包封装和分用4.网络传输流程图 五、网络中的地址管理1.认识IP地址2.认识MAC地址3.…

C++与数据库MySQL锁——模拟订票(事务)

假设订票的时候&#xff0c;好几个人同时进入&#xff0c;查看这张票是否售出&#xff0c;假如同时购买了这张票&#xff0c;那对于售票行业来说&#xff0c;可能就会发生低级错误。那么如何避免这类事情发生呢&#xff1f; 解决办法&#xff1a; 在一个人访问的时候&#xf…

DataFunSummit:2023年知识图谱在线峰会-核心PPT资料下载

一、峰会简介 AIGC&#xff0c;ChatGPT以及发布的GPT-4相信已经给大家带来足够的冲击&#xff0c;那么对于知识图谱的应用产生哪些变化和变革&#xff1f;知识图谱在其中如何发挥作用呢&#xff1f;通过LLM是否有可能辅助创建通用大规模知识图谱&#xff1f;AIGC时代下行业知识…

burpsuite专业版的安装和破解(2024年最新)

burpsuite专业版的安装和破解&#xff08;2024年最新&#xff09; 简介视频教程下载BP专业版第一步第二步&#xff1a;下载第三步第四步&#xff1a;打开powershell界面第五步&#xff1a;在powershell中执行BurpLoaderKeygen.jar文件第六步&#xff1a;破解第七步&#xff1a;…

聚道云软件连接器,助力某钢铁行业公司实现发票信息自动同步

客户介绍&#xff1a; 某钢铁行业公司是一家大型现代化民营钢铁企业&#xff0c;拥有覆盖钢铁全产业链的冶金装备、技术和全过程信息系统。公司业务涉及钢铁、煤炭、房产等行业&#xff0c;多年来一直保持着稳健的发展态势。 添加图片注释&#xff0c;不超过 140 字&#xff0…

VlnPlot画的其实不是原始数据

昨天的推文描述了让小提琴图肚子变大的做法&#xff1a;让你的小提琴肚子大起来‍‍‍‍‍‍‍‍‍‍‍‍‍ 在此说明&#xff1a;这种不考虑后果&#xff0c;就让肚子大起来的做法是不严谨的。如需使用&#xff0c;建议将原始图和修改图放在一起对比&#xff0c;且在文章中注…

vue3+echart绘制中国地图并根据后端返回的坐标实现涟漪动画效果

1.效果图 2.前期准备 main.js app.use(BaiduMap, {// ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ak: sRDDfAKpCSG5iF1rvwph4Q95M6tDCApL,// v:3.0, // 默认使用3.0// type: WebGL // ||API 默认API (使用此模式 BMapBMapGL) });i…

K210基础实验系列

CanMV K210 开发板: CanMV K210 是由 01Studio 设计研发&#xff0c;基于嘉楠科技边缘计算芯片 K210 &#xff08; RSIC V 架构&#xff0c; 64 位双核&#xff09;方案的一款开发板&#xff0c;采用硬件一体化设计&#xff08; K210 核心板、 摄像头、 LCD 集成在一个…

服务器内存不足怎么办?会有什么影响?

服务器内存&#xff0c;也被称为RAM&#xff08;Random Access Memory&#xff09;&#xff0c;是一种临时存储设备&#xff0c;用于临时存放正在运行的程序和数据。它是服务器上的超高速存储介质&#xff0c;可以快速读取和写入数据&#xff0c;提供给CPU进行实时计算和操作。…

localhost和127.0.0.1的区别是什么

今天在网上逛的时候看到一个问题&#xff0c;没想到大家讨论的很热烈&#xff0c;就是标题中这个&#xff1a; localhost和127.0.0.1的区别是什么&#xff1f; 前端同学本地调试的时候&#xff0c;应该没少和localhost打交道吧&#xff0c;只需要执行 npm run 就能在浏览器中打…

Priors in Deep Image Restoration and Enhancement: A Survey

深度图像恢复和增强中的先验&#xff1a;综述 论文链接&#xff1a;https://arxiv.org/abs/2206.02070 项目链接&#xff1a;https://github.com/VLIS2022/Awesome-Image-Prior (Preprint. Under review) Abstract 图像恢复和增强是通过消除诸如噪声、模糊和分辨率退化等退化…

【北邮国院大四上】Business Technology Strategy 企业技术战略

北邮国院电商大四在读&#xff0c;本笔记仅为PPT内容的整理与翻译&#xff0c;并不代表本课程的考纲及重点&#xff0c;仅为本人复习时方便阅读与思考之作。 写在前面 大家好&#xff0c;欢迎来到大学期间的最后一门课程&#xff0c;本门课程是中方课&#xff0c;所以很庆幸的…

WEB 3D技术 three.js 顶点交换

本文 我们来说 顶点的转换 其实就是 我们所有顶点的位置发生转变 我们整个物体的位置也会随之转变 这里 我们编写代码如下 import ./style.css import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.j…

基于MATLAB的均值,方差,变量的矩(附完整代码与例题)

目录 一. 数学期望与方差 二. 样本的均值与方差 三. MATLAB代码 四. 例题与代码 4.1 正态分布 4.2 Rayleigh分布 五. 随机变量的矩 5.1 原点矩与中心距 5.2 例题3 5.3 样本向量的原点矩与中心矩 一. 数学期望与方差 将某连续随机变量x的概率密度函数记为p(x)&#x…

CentOS未能挂起虚拟机

问题&#xff1a; CentOS未能挂起虚拟机 解决方案&#xff1a; 1、切换到root 2、打开/etc/selinux/config 3、编辑fonfig文件SELINUXpermissive 4、重启VMware&#xff08;很重要&#xff01;&#xff01;&#xff01;简单粗暴&#xff0c;直接右上角x关机。&#xff09; …

《Linux C编程实战》笔记:创建线程

上一章是进程&#xff0c;这一章是线程 有关线程进程的概念之类的请自行学操作系统吧&#xff0c;书里都是偏实战应用的 线程创建函数pthread_create #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine)…

【AI视野·今日NLP 自然语言处理论文速览 第六十九期】Wed, 3 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 3 Jan 2024 Totally 24 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers An Autoregressive Text-to-Graph Framework for Joint Entity and Relation Extraction Authors Zaratiana Ur…

Presto CLI学习

1. 序言 作为Presto的客户端之一&#xff0c;Presto CLI是一个基于终端的交互式shell&#xff0c;对应presto源码中的presto-cli模块 Presto CLI的本质是一个self-executing jar —— presto-cli-version-executable.jar&#xff0c;就像一个普通的UNIX可执行文件 因此&#…