千家信息网

C语言二级指针的作用是什么

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍"C语言二级指针的作用是什么",在日常操作中,相信很多人在C语言二级指针的作用是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C语言二级指针的作用是
千家信息网最后更新 2025年12月03日C语言二级指针的作用是什么

这篇文章主要介绍"C语言二级指针的作用是什么",在日常操作中,相信很多人在C语言二级指针的作用是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C语言二级指针的作用是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、概念

在如下的A指向B、B指向C的指向关系中:

首先

C是"一段内容",比如你用malloc或者new分配了一块内存,然后塞进去"一段内容",那就是C了。C的起始地址是0x00000008。

B是一个指针变量,其中存放着C的地址,但是B也要占空间的啊,所以B也有地址,B的起始地址是0x00000004,但是B内存中存放的是C的地址,所以B里面的内容就是0x00000008。

那么到此为止都比较好理解:

 
  1. B= 0x00000008; //B的内容

  2. *B = "一段内容"; //B解引用,也就是B指针指向的C的值

  3. &B = 0x00000004; //B取地址,B的地址是0x00000004

那么,再来看A:

A是二级指针变量,其中存放着B的地址0x00000004,A也有地址,是0x00000000;

 
  1. *A = B= 0x00000008; //A解引用也就是B的内容

  2. **A = *B = "一段内容"; //B解引用,也就是B指针指向的C的值

  3. A = &B = 0x00000004; //A存的是B的地址,B的地址是0x00000004

  4. &A = 0x00000000; //A取地址

指向指针的指针即二级指针保存的是一级指针的地址,比如:

p是一级指针,保存的是a的地址;q是指向指针的指针(二级指针),保存的是一级指针(p)的地址;q的内容就是0xbfaca770,*q的值即q指向的内容0xbfaca776,即*q仍然是一个地址,也就是指针p的内容,即*q=p

二、使用

二级指针作为函数参数的作用:在函数外部定义一个指针p,在函数内给指针赋值,函数结束后对指针p生效,那么我们就需要二级指针。

看看下面一段代码:有两个变量a,b,指针q,q指向a,我们想让q指向b,在函数里面实现。

1.先看看一级指针的实现

#includeusing namespace std;int a= 10;int b = 100;int *q;void func(int *p){cout<<"func:&p="<<&p<<",p="<a,b,q都有一个地址.note:2->q指向a.note:3->我们发现参数p的地址变了,跟q不一样了,是的参数传递是制作了一个副本,也就是p和q不是同一个指针,但是指向的地址0x0032F000(a的地址)还是不变的.note:4->p重新指向b.note:5->退出函数,p的修改并不会对q造成影响。结论:编译器总是要为函数的每个参数制作临时副本,指针参数p的副本是 p,编译器使 p = q(但是&p != &q,也就是他们并不在同一块内存地址,只是他们的内容一样,都是a的地址)。如果函数体内的程序修改了p的内容(比如在这里它指向b)。在本例中,p申请了新的内存,只是把 p所指的内存地址改变了(变成了b的地址,但是q指向的内存地址没有影响),所以在这里并不影响函数外的指针q。这就需要二级指针操作:2.二级指针操作#includeusing namespace std;int a= 10;int b = 100;int *q;void func(int **p) //2{cout<<"func:&p="<<&p<<",p="<

到此,关于"C语言二级指针的作用是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

指针 地址 指向 内容 函数 内存 也就是 参数 拷贝 作用 分配 语言 就是 学习 副本 变量 影响 代码 只是 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 搞软件开发的男生要掉发吗 root服务器进入不了 宁夏商城系统软件开发 数据库安全 模型 2021数据库工程师资料 家用服务器如何搭建网站 遵化企业网络技术诚信合作 柒零三网络技术公司 广州独创网络技术有限公司 专科可以学软件开发吗 互联网背景下的科技创新方式 苏州共创网络技术有限公司 党内统计系统数据库怎么建立 贵州知名软件开发报价 中国农业银行软件开发中心好吗 手机客户端数据库用的什么 海淀区正规软件开发要求 计算机软件开发会计行业 下载数据库安装包太慢 怀旧服是星期几服务器维护 赣州市网络安全知识线上竞答 sucm怎么进服务器 node自定义表单数据库设计 软件开发与软件实施 宝山区会计软件开发出厂价格 汕尾网络安全宣传周直播 nsfv 网络安全功能虚拟化 中国生物医学数据库检索官网 陕西松毅软件开发有限公司 日语专业去日本做软件开发
0