指针的魅力-----指针数组与数组指针

指针的魅力 指针的魅力 序 指针说:love me,love me! 但是他对指针说:I hate u,I hate u! ……   指针仅仅是作为指针,我们可以把它当做有用的工具,为我们提供便利与好处。说起工具不得不让我想起一样东西——锄头,因为原人类有了锄头才使人类文明进入了开荒造田的农业时代,解决了温饱,开启了人类新纪元。可以这么说吧锄头使人类文明得到进步,没有锄头也就没有今天的 阅读详情
指针作为C语言一种强大的工具,给程序员带来相当大的便利。然而获得便利的前提是掌握它的使用。对于我这种很肤浅的程序员而言,各种指针的区别很容易让人迷糊,今天发个博,记录一下自己对指针数组与数组指针的理解。
数组指针:
定义方式: int (*p)[n];
()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。
如要将二维数组赋给一指针,应这样赋值:
int a[3][4];
int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。
 p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
  p++;       //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]
所以数组指针也称指向一维数组的指针,亦称行指针。

/*******************************************************************************************************/

指针数组

定义方式 int *p[n];
[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1时,则p指向下一个数组元素,这样赋值是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。
如要将二维数组赋给一指针数组:
int *p[3];
int a[3][4];
p++; //该语句表示p数组指向下一个数组元素。注:此数组每一个元素都是一个指针
for(i=0;i<3;i++)
p[i]=a[i]
这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]
所以要分别赋值。
1、深入C语言的秘密:从初学者到专家的旅程 本文深入探讨了C语言的魅力与挑战,从初学者到专家的进阶之路。内容涵盖C语言的学习难度、常见错误及避免方法、编程技巧、指针与数组的关系、函数与原型的作用以及C语言的标准演变。通过案例分析和代码示例,帮助读者掌握编写高效、健壮代码的最佳实践。 阅读详情

相关推荐

Windows下Maven环境变量配置避坑指南:解决‘mvn‘不被识别问题

本文详细解析了Windows系统中配置Maven环境变量时常见的'mvn'不被识别问题,特别是当系统提示“无法将‘mvn’项识别为cmdlet、函数、脚本文件或可运行程序的名称”时的解决方案。文章从问题根源入手,提供了清晰的配置步骤、深入的排查方法以及针对PowerShell的特殊处理,旨在帮助开发者彻底解决环境变量配置难题,确保Maven命令正常使用。

weixin_28826961的博客 389

C语言数组之指针数组和数组指针

指针数组指针数组指针数组

weixin_34481217的博客 1万+

eNSP-交换机VLAN配置

VLAN

乌托托的博客 8804

关于指针

今天需要预习的内容是指针。   指针作为C语言编程中一种非常灵活的使用工具,学会正确的使用可以带来很大的方便,可以直接切入问题的核心。   1.指针到底是什么?   指针是变量,指针有变量的特性,系统为指针分配内存空间,指针有自己的地址,指针能够存值,存的内容是地址。   2.关于*p操作 (1)在声明指针中,“*”号表示所声明的变量是一个指针。 (2) 在指针使用时,“*”号表示操作

Wyh20171105的博客 205

Orcad 17.2导出PDF原理图终极指南:从Ghostscript安装到带属性书签配置

本文是Orcad 17.2导出高质量PDF原理图的终极指南。针对导出过程中常见的Ghostscript安装报错、软件卡死及版本兼容性问题,提供了详细的解决方案。重点推荐使用Ghostscript 9.53.3版本以确保最佳兼容性,并深入讲解了从安装配置、内存优化到高级书签属性设置的完整流程,帮助硬件工程师稳定、高效地生成带完整器件属性和导航书签的PDF文档。

weixin_29281915的博客 393

压电陶瓷传感器避坑指南:实测阻抗匹配对信号输出的影响(附示波器调试技巧)

本文深入探讨压电陶瓷传感器在工业振动监测中的阻抗匹配问题,通过等效电路模型和实测数据揭示负载阻抗对信号输出的关键影响。文章提供从元件选型到示波器调试的完整解决方案,特别强调100kΩ以上负载阻抗的重要性,并分享JFET缓冲器设计和PCB布局的实用技巧,帮助工程师避免信号失真和输出不稳定问题。

ooo22的博客 516

C语言—指针数组与数组指针

前言: 看到标题的小伙伴可能会有点疑惑,什么是指针数组,数组指针??傻傻分不清楚,不怕,听我慢慢道来。 正文: 要想弄清楚这两个概念,我们不妨举几个例子: 1、数组: int arr[5] = {1,2,3,4,5}; 这就是最简单的数组,数组中每个元素都是int类型,下面的图片帮助大家很容易理解。 数组可以将相同类型的数据整合到一起,你可以通过下标的方式或者指针的方式来访问,在这里不多赘述。 ...

weixin_44580000的博客 1万+

[原创]Step by step 实现自己的AI知识库问答(二)

对小白很友好的AI智能问答开发保姆级教程,适合初级开发者、学生阅读参考,无限制分享,欢迎转载。在这个章节中,我们使用了百度千帆作为知识库,通过简单的代码调用API实现了智能问答。

BaiRiYiSanJin的博客 1470

C语言指针类型重要性

C语言中,带上类型运算是一个很好的习惯。 我们来看一道题目。 若定义char a[3][3]={“ad”,“ce”,“fb”}, *s = (char *)a;那么下列表达式语法正确,并且其值与a[2][1]相等的表达式是_______。 A.*(a+3)B.*(*a+5)C.s[2][1]D.*++s-2 答案是D 这题设计的挺巧妙,其中有个理解的重点...

吉大秦少游 5413

LangGraph 实战教程:搭建一个智能办公多Agent协作平台

只存储必要的信息:不要把所有的原始数据都存储在状态中,比如销售数据可以存储在数据库或向量数据库中,状态中只存储数据的 ID 或摘要。使用类型提示:避免类型错误,提高代码的可维护性。支持增量更新:LangGraph 默认支持状态的增量更新(通过reduce函数),比如messages列表可以通过追加新消息的方式更新,而不是每次都重新创建整个列表。Normal Edge 的定义非常简单,只需要在StateGraph对象(稍后会详细讲解)上调用add_edge# 创建一个 StateGraph 对象。

SuperAGI2025 221

博途PLC模糊PID控制(量化因子和比例因子)

参数"量化因子和比例因子",都是为了对清晰值进行比例变换而设置的,其作用是使变量按一定比例进行放大或缩小,以便和我们的模糊论域相匹配完成一一映射。这种变换对整个系统的工作性能也是有影响的。(其实相当于额外引入了比例作用,所以说模糊PID的调节是个系统工程)。限于本人能力,文中难免出现错误和不足,欢迎大家批评和指正。博途PLC的模糊PID控制完整算法可以参看下面这篇文章博途PLC模糊PID控制详解(SCL完整源代码+参数)_RXXW_Dor的博客-优快云博客。......

RXXW_Dor的博客 5269

排序和链表面试题

排序和链表面试题

hessenberg的博客 188

QT控件 参考Qt的PIMPL设计模式实现使用QWidget控件绘制3D饼状图表和3D柱状图表,使用QChartView绘制圆柱体图表

工作中之前遇到了绘制3D饼状图表的需求,通过Qt 实现3维饼状图 一文,成功迅速解决问题,现在闲下来了,之前看QtTreePropertyBrowser库的源代码,就想着学习学习Qt的PIMPL模式,于是就参照PIMPL模式实现通过QWidget控件的paintEvent函数重新绘制3D饼状图表和3D柱状图表统计数据的显示效果, 而使用QChartView绘制圆柱体图表完全是取巧了,为了紧急完成工作采用的方法,实际上使用3D柱状图表显示统计数据更加合理。

... 727

【算法总结--数组相关】双指针法的常见应用。

所谓双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向或者相反方向的指针进行扫描,从而达到相应的目的。     换言之,双指针法充分使用了数组有序这一特征,从而在某些情况下能够简化一些运算。     (注:这里的指针,并非专指c中指针的概念,而是指索引,游标或指针,可迭代对象等)     这类算法包括:     1.给定一个有序递增数组,在数组中找到

专注、专心 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C基础11--指针总结

文章是结合了之前的对指针的理解,加上后面的数组,结构体,因为数组 结构体在和指针结合后,又是一番滋味。所以进行一下总结,

weixin_42215853的博客 131

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

代码随想录算法训练营第二天 | 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵||

在这题中,使用的是相向双指针,又称对撞指针。双指针法比暴力排序降低了不少时间复杂度。在前面的移除元素题中用到了同向双指针,又称快慢指针。应该多把这两题联合起来看看,理解双指针的思想。可以直观的看到,滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)暴力解法降为O(n)。滑动窗口法可以看做是一种双指针方法的特例,两个指针都起始于原点,并一前一后向终点前进。什么情况可以用滑动窗口来解决实际问题呢?一般给出的数据结构是数组或者字符串。

xizhou_sean的博客 867

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

c语言学习的一些心得体会

学习c语言也一个学期了,可能大学期间专业课的c语言结束了吧,还是特别清晰的记得刚中考之后的自己因为自己的黑客梦报了那个二级c语言的培训班(这也可能我在大学c语言学习刚开始接受特别快的原因吧,虽然经过三年高中生活的洗礼之后不记得什么了)。 在很多c语言的书上导读部分总是有那么一句话就是“c语言是可以直接面向硬件编程的语言”,开始我可能并不是那么清楚这句话的分量,直到我接触到了arduino的编程,以...

weixin_45695535的博客 1632

[LeetCode专题]27. 移除元素

27. 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

qq_42956868的博客 201

指针数组的有趣程序【C语言】

指针数组是C语言中一个非常强大的特性,它提供了一种灵活且高效的方式来管理和操作数据。通过上述示例,我们可以看到指针数组在命令行计算器程序中的应用,还有更多有趣的操作等着我们去探索给个免费的赞吧,蟹蟹了!

Q741_147的博客 906

【硬核】优质 "嵌入式C编程" 必备指南

1、聊一聊 本文是bug菌为大家整理的好文,C语言其实是非常简洁的语言,语法相比那些高级语言可以说非常小巧了,然而C语言在嵌入式中却有着其独特的魅力,本文为大家展示了C语言在嵌入式...

461

C语言——指针在数组和字符串中的应用

想了解指针吗,想应用指针吗,看我这篇文章,很简单的!!!

qq_63796876的博客 292

c++new时赋初值_优质 "嵌入式C编程" 必备指南

来自公众号 : 嵌入式ARM整理:bug菌1、聊一聊本文是bug菌为大家整理的好文,C语言其实是非常简洁的语言,语法相比那些高级语言可以说非常小巧了,然而C语言在嵌入式中却有着其独特的魅力,本文为大家展示了C语言在嵌入式中的特色,大家参考学习一下。文章中也融入了bug菌的一些观点,仅供大家学习参考!2、前言本文从语法上来说C语言并不复杂, 但编写优质可靠的嵌入式C程序并非易事,不仅需要熟...

weixin_39860583的博客 100

算法魅力-双指针的实战

双指针算法是一种常用的算法技巧,通常用于解决数组或链表相关的题目。双指针算法的核心思想是使用两个指针在数组或链表上移动,这里的指针并不是只是指指针,我们可以用数组下标来代替,以达到解决问题的目的。

2302_79376097的博客 3937

【魅力golang】之——指针

Golang中传递指针而非值,可以避免值拷贝带来的性能损失,通过指针,不同的函数或协程可以共享对同一数据的访问权限,从而实现数据的同步和共享。Go 的指针相比于 C/C++ 更简单、易于管理,比如,golang的指针不能运算,这就对针的破坏性作了充分约束。Go 的指针提供了非常强大的内存操作能力,能够让开发者高效地操作数据,尤其是在处理较大的结构体和数组时,指针传递能够显著提高性能。指针是存储另一个变量的内存地址的变量。指针的意义在于提供对变量的直接访问和操作能力,同时实现高效的内存管理和灵活的数据操作。

网络风云的博客 8769

(C语言)指针的魅力

这里a是一个数组指针变量,指向了10个int字节大小的数组,就相当于把数组的地址存在数组指针里面,而且方括号里面的数字与指向的数组息息相关,只能是指向数组的大小,不可以省略不写, 因为[]比*的优先级要高,所以得加()确保a先和*结合,这样才叫数组指针。在指针中也有一个特殊的类型是void*指针类型,可以理解为无具体类型的指针(泛型指针),这种指针可以被拿来接收任何类型的地址,但局限性是void*指针不能直接进行指针的+-整数和解引用的运算!指针的大小与类型无关,在同一平台下,指针的大小是一样的。

2201_75819730的博客 1007

由浅入深,带你探索C语言指针的魅力

对于初学者来说,听学长学姐们说指针很难?指针指两下会指的让人找不到方向?在这种恐惧之下,我们肯定也好奇什么是指针?什么是指针?什么是***指针? 依在下愚见指针就是地址,那既然是地址,为什么被说的这么玄乎呢?接下来让我带带领大家一层一层的揭开指针神秘的面纱。 此文针对初学C/C++指针的同学,或者期末考试复习的同学,如果您觉得对您学习有所帮助,麻烦来个一键三连。 一、什么是指针? 定义:指针是一种数据类型,用来存放内存地址单元。我们通常把具有指针类型的变量称为指针变量。 首先我们需要知道指针是如何定义的,指

KOOKNUT的博客 4316
下一篇: C语言播放MP3音乐
LayCui
博客等级 码龄12年 2粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值