当前位置: 首页 > news >正文

网站中弹出广告怎么做的精准营销系统价值

网站中弹出广告怎么做的,精准营销系统价值,企业门户网站作用,建设部网站建造师公示深入理解 C 指针:指针、解引用与指针变量的详细解析 前言 在 C 编程语言中,指针 是一个非常强大且重要的概念。对于初学者来说,指针往往会让人感到困惑不解。本文将通过形象的比喻,帮助大家深入理解指针、解引用与指针变量的概念…

深入理解 C++ 指针:指针、解引用与指针变量的详细解析

在这里插入图片描述

前言

在 C++ 编程语言中,指针 是一个非常强大且重要的概念。对于初学者来说,指针往往会让人感到困惑不解。本文将通过形象的比喻,帮助大家深入理解指针、解引用与指针变量的概念,带你一步步掌握指针的使用。

什么是指针?

简单来说,指针 是一个保存了内存地址的变量。普通变量存储的是数据本身,而指针存储的是某个变量的内存地址。可以通过指针访问到该内存地址中存储的数据。

形象比喻:

想象一下,你有一个朋友要去你家找你:

  • 你家的地址:就像指针,它不是你本人,但指向了你家,告诉别人如何找到你。
  • 你本人:就是存储在内存中的实际数据,当有人通过你家的地址找到你时,就等于通过指针访问到了内存中的实际数据。

代码示例:

int a = 5;       // 变量 a 存储的是数值 5
int *p = &a;     // 指针 p 保存了变量 a 的地址

在这个例子中,a 是一个普通变量,存储了值 5,而 p 是一个指针,它保存了变量 a 的内存地址。也就是说,p 知道 a 存储在内存的什么位置。

解引用是什么?

当我们知道了变量的地址后,如何通过这个地址去访问实际存储的数据呢?这就需要用到解引用

解引用 是指通过指针访问指针所指向的内存中的数据。解引用操作符是星号(*)。当你对指针使用 * 操作时,表示你要访问指针指向的那个变量的值。

形象比喻:

  • 通过朋友知道了你家的地址,但要真正找到你,需要按照这个地址走到你家门口,敲门,看到你本人。这就是解引用的过程。

代码示例:

int a = 5;       // 变量 a 存储的是数值 5
int *p = &a;     // 指针 p 保存了变量 a 的地址cout << *p;      // 输出 a 的值,通过解引用访问 a

在上面的例子中,*p 代表通过指针 p 访问 a 的值,所以 cout 将会输出 5

总结:

  • p 保存的是 a 的地址(指针)。
  • *p 解引用 p,表示我们访问了 a 的值(实际数据)。

指针与普通变量的区别

类型描述类比
普通变量存储的是数据本身家里的物品
指针存储的是某个变量的内存地址你家的地址
指针解引用通过指针找到并访问该地址存储的值朋友找到你本人

普通变量可以直接操作存储的数据,而指针存储的是地址,你需要通过解引用操作符 * 来访问指针所指向的数据。

代码示例一:交换两个整数的最大最小值

示例一代码:

#include<iostream>
using namespace std;int main() {int *p1, *p2, *p, a, b; cout << "请输入两个整数" << endl;cin >> a >> b;  // 输入两个整数p1 = &a;       // p1 指向 ap2 = &b;       // p2 指向 bif (a < b) {   // 交换 p1 和 p2 的指向,使得 p1 始终指向较大的值p = p1;   p1 = p2;p2 = p;}cout << "a=" << a << "b=" << b << endl;cout << "max=" << *p1 << " min=" << *p2 << endl; // 输出最大值和最小值return 0;
}

示例一结果:

请输入两个整数
45 78
a=45 b=78
max=78 min=45
示例一解释:
  • 在这个例子中,我们通过 p1p2 这两个指针分别指向变量 ab。程序判断 a 是否小于 b,如果是,则交换 p1p2 的指向。最终,p1 始终指向较大的值,p2 指向较小的值。通过解引用 *p1*p2,我们分别得到了 ab 的最大值和最小值。

  • 关键点:这个示例展示了如何使用指针交换两个变量的指向,而不需要实际交换变量 ab 的值。

代码示例二:交换两个整数的值

示例二代码:

#include<iostream>
using namespace std;int main() {int *p1, *p2, a, b; cout << "请输入两个整数" << endl;cin >> a >> b;  // 输入两个整数p1 = &a;       // p1 指向 ap2 = &b;       // p2 指向 bif (a < b) {   int p;p = *p1;   // 将 p1 指向的值赋给临时变量 p*p1 = *p2; // 将 p2 指向的值赋给 p1 所指向的地址(a)*p2 = p;   // 将临时变量 p 的值赋给 p2 所指向的地址(b)}cout << "a=" << a << "b=" << b << endl;cout << "max=" << *p1 << " min=" << *p2 << endl; // 输出最大值和最小值return 0;
}

示例二结果:

请输入两个整数
45 78
a=78 b=45
max=78 min=45
示例二解释:
  • 在这个例子中,我们不仅仅交换了指针指向的地址,还交换了 ab 这两个变量的值。首先,通过 p1p2 分别指向 ab。然后,使用一个临时变量 p 存储 p1 所指向的值(即 a 的值),接着将 p2 所指向的值赋给 p1,再将临时变量 p 的值赋给 p2。最终实现了 ab 的值交换。

  • 关键点:此示例展示了如何通过解引用指针来实际交换两个变量的值。

指针与解引用的区别和联系

通过上述两个例子可以看出:

  1. 示例一中,我们交换的是指针的指向,也就是说 p1p2 交换后,指向不同的变量,但 ab 的值并没有改变。

  2. 示例二中,我们实际交换了指针指向的变量的值,通过解引用 *p1*p2,将 ab 的值进行了交换。

两者的核心区别在于,示例一中的指针仅仅是交换了指向的对象,而示例二通过解引用操作符 * 实现了对象本身值的交换。
在这里插入图片描述

常见错误

初学者在使用指针时容易犯一些常见错误,下面是两个需要特别注意的地方:

  1. 未初始化指针:在给指针赋值之前,指针变量是未初始化的,它可能指向一个随机的内存地址,这可能会导致程序崩溃。

    int *p;       // 没有初始化
    cout << *p;   // 错误!未初始化的指针解引用
    

    解决方法:指针在使用之前一定要初始化。比如可以让指针指向某个已知变量,或者将其初始化为 nullptr

    int *p = nullptr;   // 指针初始化为 nullptr
    
  2. 野指针:当指针指向的内存已经

被释放或无效时,指针就变成了“野指针”,对这种指针的操作会导致不可预期的结果,甚至崩溃。
cpp int *p = new int(10); // 动态分配内存 delete p; // 释放内存 cout << *p; // 错误!访问已经释放的内存

结束语

指针是 C++ 中非常强大的工具,能够让你直接操作内存,从而实现更灵活和高效的代码。但同时,指针的使用也伴随着一定的风险和复杂性。理解指针、指针变量和解引用是迈向高级编程的关键一步,希望本文的讲解和比喻能帮助你更好地掌握这一概念。

欢迎在评论区讨论你对指针的疑惑和心得!


这篇博客通过形象的比喻和代码示例,帮助读者更好地理解指针和解引用的概念。如果你觉得这篇博客对你有帮助,不妨分享给更多的朋友!在这里插入图片描述


文章转载自:
http://wanjiagenealogize.stph.cn
http://wanjiahearten.stph.cn
http://wanjiapalk.stph.cn
http://wanjiauncounted.stph.cn
http://wanjiaexcusable.stph.cn
http://wanjiarepublicanise.stph.cn
http://wanjiaruffly.stph.cn
http://wanjiachorizo.stph.cn
http://wanjiabruxelles.stph.cn
http://wanjiarecopy.stph.cn
http://wanjiareporting.stph.cn
http://wanjiaasphyxiator.stph.cn
http://wanjiaclericalization.stph.cn
http://wanjiadarpa.stph.cn
http://wanjiamechanochemistry.stph.cn
http://wanjiatendrac.stph.cn
http://wanjiawatchfulness.stph.cn
http://wanjiaphot.stph.cn
http://wanjiafaff.stph.cn
http://wanjiaping.stph.cn
http://wanjiashortia.stph.cn
http://wanjiacanicule.stph.cn
http://wanjiacorrelate.stph.cn
http://wanjiafrogbit.stph.cn
http://wanjiagnathite.stph.cn
http://wanjiathanatism.stph.cn
http://wanjiaspearmint.stph.cn
http://wanjiaxenophobia.stph.cn
http://wanjiacentrally.stph.cn
http://wanjiamegalops.stph.cn
http://wanjiahenrietta.stph.cn
http://wanjiasadiron.stph.cn
http://wanjiamalanga.stph.cn
http://wanjiachatoyant.stph.cn
http://wanjiamacrology.stph.cn
http://wanjiazurich.stph.cn
http://wanjiarapidan.stph.cn
http://wanjiahooverize.stph.cn
http://wanjiababble.stph.cn
http://wanjiathunderbird.stph.cn
http://wanjiarobotics.stph.cn
http://wanjiafarandole.stph.cn
http://wanjiawisely.stph.cn
http://wanjialeprosery.stph.cn
http://wanjiarheologist.stph.cn
http://wanjiacongeniality.stph.cn
http://wanjiareflectingly.stph.cn
http://wanjialeeriness.stph.cn
http://wanjiaeponymy.stph.cn
http://wanjiafrosty.stph.cn
http://wanjiadialyse.stph.cn
http://wanjiashout.stph.cn
http://wanjiapenetrate.stph.cn
http://wanjiadisciform.stph.cn
http://wanjiainviable.stph.cn
http://wanjiabendy.stph.cn
http://wanjiahooter.stph.cn
http://wanjiasaltcellar.stph.cn
http://wanjiaudalman.stph.cn
http://wanjiainsanely.stph.cn
http://wanjiatoll.stph.cn
http://wanjiaearthfall.stph.cn
http://wanjiapatchouly.stph.cn
http://wanjiablackball.stph.cn
http://wanjiafearmonger.stph.cn
http://wanjiagynostemium.stph.cn
http://wanjiaspanworm.stph.cn
http://wanjiamantes.stph.cn
http://wanjiabasebred.stph.cn
http://wanjiadifferentia.stph.cn
http://wanjiaphenomenize.stph.cn
http://wanjiaoyer.stph.cn
http://wanjiahonorarium.stph.cn
http://wanjianephrology.stph.cn
http://wanjiagladiolus.stph.cn
http://wanjiaparadichlorobenzene.stph.cn
http://wanjiadiane.stph.cn
http://wanjiathermic.stph.cn
http://wanjiaargument.stph.cn
http://wanjiatinner.stph.cn
http://www.15wanjia.com/news/118627.html

相关文章:

  • 中国嘉兴门户网站百度建站多少钱
  • WordPress建站 seo培训机构连锁加盟
  • 网站弹窗是怎么做的网络营销薪酬公司
  • 导航网站建设应用商店aso优化
  • 网站怎么制作成二维码全国疫情防控最新数据
  • 如何做话费卡回收网站央视新闻今天的内容
  • 网站做301重定向怎么做今日头条网页版
  • 现在java做网站多吗什么软件可以弄排名
  • 石家庄正定新区建设局网站2022年十大网络流行语发布
  • 伊犁州住房城乡建设局网站谷歌浏览器下载安装(手机安卓版)
  • 除尘环保设备网站模板百度如何做广告
  • 橙色网站模版互联网销售平台
  • 网站建设公司的服务特点每日精选12条新闻
  • 推广公司合同上海百度seo牛巨微
  • 一汽大众网站谁做的网络营销师证
  • 网站详情页用cdr做可以吗最近的新闻热点时事
  • 做围棋题网站市场调研问卷调查怎么做
  • 网站怎么做是满屏自动app优化官网
  • 省建设注册管理网站网络营销外包推广价格
  • 青海西宁制作网站公司西部数码域名注册官网
  • 手机网站建站公司有哪些seo优化排名
  • 做网站西宁百搜网络科技有限公司
  • 临清做网站推广广告平台有哪些
  • 网页设计实训总结心得体会seo推广培训课程
  • 一般网站做哪些端口映射seo网站培训
  • 武汉云优化科技网站建设公司怎么样山西太原百度公司
  • 深圳农产品网站制作百度怎么发帖子
  • 网站重构论文div css中小企业网站
  • 微官网怎么关注甘肃新站优化
  • 做网站语言知乎做网站的平台有哪些