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

这篇具有很好参考价值的文章主要介绍了秒懂百科,C++如此简单丨第十六天:指针。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

必看信息

Everyday English

前言 

📝了解指针

📝定义指针

📝分析指针

📝运用指针

总结


必看信息

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

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

专栏亮点

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

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

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的值,所以输出应该是:

秒懂百科,C++如此简单丨第十六天:指针,秒懂百科,C++如此简单,c++,开发语言

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

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

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

秒懂百科,C++如此简单丨第十六天:指针,秒懂百科,C++如此简单,c++,开发语言

📝分析指针

指针的利:

  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;  
}

运行截图:
秒懂百科,C++如此简单丨第十六天:指针,秒懂百科,C++如此简单,c++,开发语言

总结

本篇文章讲解了指针的运用及定义,欢迎大家指出错误。文章来源地址https://www.toymoban.com/news/detail-790981.html

到了这里,关于秒懂百科,C++如此简单丨第十六天:指针的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA SE -- 第十六天

    (全部来自“韩顺平教育”) 一、文件 是保存数据的地方 2、文件流 文件在程序中是以流的形式来操作  流:数据在数据源(文件)和程序(内存)之间经历的路径 输入流:数据从数据源(文件)到程序(内存)的路径 输出流:数据从程序(内存)到数据源(文件)的路径

    2024年02月14日
    浏览(65)
  • 学习Android的第十六天

    目录 Android 自定义 Adapter Adapter 接口 SpinnerAdapter ListAdapter BaseAdapter 自定义 BaseAdapter 参考文档 Android ListView 列表控件 ListView 的属性和方法 表头表尾分割线的设置 列表从底部开始显示 android:stackFromBottom 设置点击颜色 cacheColorHint 隐藏滑动条 在上一篇文章中我们知道了啥是 Adap

    2024年02月19日
    浏览(58)
  • 第十六天-爬虫selenium库

    目录 1.介绍 2.使用 selenium 1.安装 2.使用 1.测试打开网页,抓取雷速体育日职乙信息 2.通过xpath查找 3.输入文本框内容 send_keys 4.点击事件 click 5.获取网页源码: 6.获取cookies 7.seleniumt提供元素定位方式:8种 8.控制浏览器前进、后退、刷新 9.控制鼠标 10. 设置等待 11设置后台运行

    2024年03月12日
    浏览(51)
  • 学习Bootstrap 5的第十六天

    目录 Flex(弹性)布局 弹性盒子(flexbox) 水平方向 垂直方向 对齐内容 等宽 伸展 顺序 自动外边距 包裹 对齐内容 子元素对齐 指定子元素对齐 响应式 Flex 类 Bootstrap 3 和 Bootstrap 4 5 的最大区别在于 Bootstrap 5 现在使用 flexbox 而不是浮动来处理布局。 弹性的框布局模块,可以更轻

    2024年02月06日
    浏览(40)
  • 数据结构第十六天(二叉树层序遍历/广度优先搜索(BFS)/队列使用)

    目录 前言 概述 接口 源码 测试函数 运行结果 往期精彩内容 从前的日色变得慢,车,马,邮件都慢,一生,只够爱一个人。 二叉树的层序遍历可以使用广度优先搜索(BFS)来实现。具体步骤如下: 创建一个队列 queue,并将根节点入队。 当队列不为空时,重复执行以下步骤:

    2024年02月22日
    浏览(37)
  • MFC第十六天 CFileDialog、CEdit简介、(线程)进程的启动,以及Notepad的开发(托盘技术-->菜单功能)

    通用对话框 CCommonDialog 这些对话框类封装 Windows 公共对话框。 它们提供了易于使用的复杂对话框实现。 CFileDialog 提供用于打开或保存文件的标准对话框。 CColorDialog 提供用于选择颜色的标准对话框。 CFontDialog 提供用于选择字体的标准对话框。 CFindReplaceDialog 为搜索和替换操作

    2024年02月16日
    浏览(38)
  • 【致敬未来的攻城狮计划】— 连续打卡第十六天:FSP固件库系统定时器(滴答定时器SysTick)每2秒LED闪烁一次

    1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.Keil配置使用(使用 RASC 生成 Keil 工程) 6.Keil配置使用(使用 RASC 生成 Keil 工程)

    2024年02月01日
    浏览(79)
  • 第一百一十六天学习记录:C++提高:STL-string(黑马教学视频)

    string是C++风格的字符串,而string本质上是一个类 string和char 区别 1、char 是一个指针 2、string是一个类,类内部封装了char*,管理这个字符串,是一个char 型的容器。 特点: string类内部封装了很多成员方法 例如:查找find,拷贝copy,删除delete替换replace,插入insert string管理char

    2024年02月15日
    浏览(47)
  • 代碼隨想錄算法訓練營|第四十六天|完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ。刷题心得(c++)

    目录 动态规划 - 完全背包 和01背包的差別 定義 核心代碼 遍歷順序 總結 讀題 518. 零钱兑换 II 自己看到题目的第一想法 看完代码随想录之后的想法 377. 组合总和 Ⅳ 自己看到题目的第一想法 518. 零钱兑换 II - 實作 思路 Code 377. 组合总和 Ⅳ - 實作 思路 Code 總結 自己实现过

    2024年02月08日
    浏览(43)
  • C++第十六弹---string使用(上)

    ✨ 个人主页:   熬夜学编程的小林 💗 系列专栏:   【C语言详解】   【数据结构详解】 【C++详解】 目录 1、标准库中的string类    1.1、string类的常用接口说明 1.1.1、string类对象的常见构造 1.1.2、string类对象的容量操作  1.1.3、string类对象的访问及遍历操作 总结 根据前面一

    2024年04月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包