C语言指针讲解(适用于初学者)

news2024/11/25 0:47:01

本文参考视频: https://b23.tv/xLOG6SV,相当于学习笔记,这样概念混淆的时候也可以看看。

一.一级指针

以下图表示的意思是:

a的地址为0XA0,定义一个指针p,指向a的地址,计算机也会给p一个内存空间&p:0XB0

图中:p=0XA0,&p=0XB0,*p=3

来看代码:

#include<stdio.h>
void test(int *p1){
	*p1=114514;
}

int main()
{
   int *p1=NULL;
   int p=2333;
   p1=&p;
   printf("*p1=%d,p1=%d,&p1=%d,&(*p1)=%d,\np=%d,&p=%d\n",*p1,p1,&p1,&(*p1),p,&p);
   test(p1);
   printf("*p1=%d,p1=%d,&p1=%d,&(*p1)=%d,\np=%d,&p=%d\n",*p1,p1,&p1,&(*p1),p,&p);
   getchar();
   return 0;
}

 得到的结果一个一个看:

*p1=p这个变量的值

p1=p的内存地址,即(p1=&p)

&p1=计算机给p1的内存地址

&(*p1)=(*p1)这个变量的内容的地址,所以我们得到&(*p1)=&p=p1,多画图理解下就不难了。

二.二级指针(**p)

按照之前一级指针的说法,*p存放的是一级指针的地址,**p存放的就是*p的地址

以此类推***p存放的就是比他第一级指针的地址:用图理解下:

 &p1=0xc0(计算机给p1分配的地址)

p1=&p=0xb0(一级指针自身的地址)

*p1=0xa0(相当于对p1所指向的地址(0xb0)进行解析,我们找到(0xb0),发现他代表的是p的地址,而p指针所指向的是地址是(0xa0) )

注意区别:p1本身的地址和p1所指向的地址

**p1=3(同理,继续解析,得到变量a的值为3),不难发现:**p1=*p

来看代码:

#include<stdio.h>
void test2(int **p){
	printf("**p2=%d,&(*p2)=%d,*p2=%d,p2=%d,&p2=%d\n",**p,&(*p),*p,p,&p);
} 
int main(){
	int *p1=NULL;
	int p=114514;
	p1=&p;
	printf("*p1=%d,p1=%d,&p1=%d,&(*p1)=%d\n",*p1,p1,&p1,&(*p1));
	test2(&p1);
	getchar();
	return 0;
}

结果:

 其中p2代表二级指针,p1代表一级指针

●p2=&p1(p2=p1的地址)

●*p2=p1

●**p2=*p1

我们可以看到p2对p1的逐步解析(从p1的地址>到p1所指的地址>p1所指的地址的内容)

●&p2代表计算机给p2分配的地址

●&(*p2)=p2=&p1

指针确实较难理解,学习时多画图多分析

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

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

相关文章

【机器学习】十大算法之一 “KNN”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

疑似有用户安装Win11六月更新之后,无法打开Chrome浏览器

近日有网友表示&#xff0c;在安装6月更新的KB5027231之后&#xff0c;无法打开Chrome浏览器了&#xff0c;并且在任务管理器中可以看到相关**ERP系统**进程&#xff0c;但是 Chrome浏览器无法显示。 据了解&#xff0c;微软在本月的补丁星期二活动中&#xff0c;面向Win11发布…

MySQL:多表查询(全面详解)

MySQL&#xff1a;多表查询 前言附录&#xff1a;常用的 SQL 标准有哪些一、一个案例引发的多表连接1、案例说明2、笛卡尔积&#xff08;或交叉连接&#xff09;的理解3、案例分析与问题解决 二、多表查询分类讲解1、等值连接 vs 非等值连接1.1 等值连接1.2 非等值连接 2、自连…

chatgpt赋能python:使用Python生成应用的SEO

使用Python生成应用的SEO 在当今数字化时代中&#xff0c;拥有一个优化良好的应用程序对于任何企业都是至关重要的。 SEO&#xff08;搜索引擎优化&#xff09;是一个崭新且不断发展的领域&#xff0c;它对于企业非常具有建设性。在本文中&#xff0c;我们将学习如何使用Pytho…

CADisplayLink前世今生

本文字数&#xff1a;19803字 预计阅读时间&#xff1a;50分钟 用最通俗的语言&#xff0c;描述最难懂的技术 前情描述 上周同事做code review的时候说到了CADisplayLink的一些变化&#xff0c;感触颇深&#xff0c;提到了接口的一些变动&#xff0c;现在就自己的一些理解加上网…

全志V3S嵌入式驱动开发(spi-nand驱动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 nand flash相信大家并不陌生&#xff0c;现在很多的固态硬盘上面&#xff0c;其实有很多的nand flash。只不过根据存储单元&#xff0c;分成slc、m…

人机融合与因果关系

苏格兰哲学家大卫.休谟认为因果关系很难被认识&#xff0c;主要是因为他认为我们的认识是通过经验得来的&#xff0c;而经验只能告诉我们事件的先后顺序&#xff0c;而不能告诉我们事件之间的必然联系。他提出了“常见的联想”&#xff08;常见的经验&#xff09;和“原则的联想…

使用 MATLAB 进行气象激光雷达图像分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

状态模式(二十四)

相信自己&#xff0c;请一定要相信自己 上一章简单介绍了 解释器模式(二十三), 如果没有看过, 请观看上一章 一. 状态模式 引用 菜鸟教程里面 状态模式介绍: https://www.runoob.com/design-pattern/state-pattern.html 在状态模式&#xff08;State Pattern&#xff09;中&…

go常用特性(embed、插件化开发)、常用包(并发)

go常用特性及常用包 1 常用特性 1.1 go:build //go:build !windows //go:build是前缀指令&#xff0c;!windows是逻辑判断的条件。这个指令的作用是在Windows系统外&#xff0c;编译当前源文件。// build !windows // build是前缀指令&#xff0c;!windows是编译标记。这个指…

CSDN如何获得铁粉?

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

springboot+vue的校园疫情防控系统(附数据库,源码)

&#x1f495;&#x1f495;作者&#xff1a;程序员徐师兄 个人简介&#xff1a;7 年大厂程序员经历&#xff0c;擅长Java、微信小程序、Python、Android等&#xff0c;大家有这一块的问题可以一起交流&#xff01; 各类成品java毕设 。javaweb&#xff0c;ssh&#xff0c;ssm&…

责任链模式(二十六)

相信自己&#xff0c;请一定要相信自己 上一章简单介绍了策略模式(二十五), 如果没有看过, 请观看上一章 一. 责任链模式 引用 菜鸟教程里面的责任链模式介绍: https://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html 顾名思义&#xff0c;责任链模式…

Science Advance||个体动态脑中鲁棒的大脑状态

文章目录 个体化动态方法&#xff08;INSCAPE 方法&#xff09;&#xff1a;&#xff08;A&#xff09;生成脑共同激活状态的组模板&#xff1a;&#xff08;B&#xff09;个体水平分析&#xff1a; 不同的大脑状态有特定的协同激活模式&#xff08;coactivation patterns&…

ai写作怎么搞?我来教你几招

在当今信息化时代&#xff0c;ai技术的发展已经进入到了一个全新的阶段&#xff0c;越来越多的人们开始运用ai技术进行写作。作为一种创新性的工具&#xff0c;ai写作已经成为了许多企业和个人写作必不可少的工具之一。但是&#xff0c;对于初学者来说&#xff0c;如何快速上手…

【网络技术】NAT是什么?它的工作原理是什么?

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、NAT是什么&#xff1f; 二、NAT的实现方式&#xff08;三种&#xff09; 1、静态转换&#xff08;Static Nat&#xff09; 2、动…

css line-height

项目中看到 line-height&#xff1a;1 所以来总结一下 line-height 属性。 line-height 定义 line-height 属性设置行间的距离&#xff08;行高&#xff09;。 line-height 不允许使用负值。 属性可能的值 值描述normal默认。设置合理的行间距。number设置数字&#xff0…

手机技巧:安卓微信 8.0.38 内测版本功能一览

2023年6月14号安卓版本的微信8.0.38又开始内测了&#xff0c;今天就赶紧下载体验一下&#xff0c;下面就来给大家一一介绍&#xff0c;本次安卓微信内测版本功能更新&#xff0c;感兴趣的朋友可以文末下载体验一下&#xff01; 首先看一下官方的更新内容&#xff1a; 本次更新…

【Axure 教程】中继器(基础篇)

一、初识中继器 中继器是 Axure 中一个比较高阶的应用&#xff0c;它可以让我们在纯静态网页中模拟出类似带有后台数据交互的增删改查的效果&#xff0c;虽然它没有真正意义上帮我们存储任何的数据&#xff0c;但是当我们在一次项目体验过程中&#xff0c;它却可以给我们带来更…

字节跳动提出高性能 transformer 推理库,获 IPDPS 2023 最佳论文奖

动手点关注 干货不迷路 字节跳动与英伟达, 加州大学河滨分校联合发表的论文 《ByteTransformer: A High-Performance Transformer Boosted for Variable-Length》在第 37 届 IEEE 国际并行和分布式处理大会&#xff08;IPDPS 2023&#xff09;中&#xff0c;从 396 篇投稿中脱颖…