黑马程序员---学习笔记8:数组指针

【黑马程序员】C++学习笔记--入门篇(下) 数组、函数、指针(重点)、结构体(自定义数据类型、重点)、通讯录管理系统案例实战 阅读详情

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-


数组元素的指针就是数组元素的地址。
注意:
1)数组名不代表整个数组,而只是表示,数组的首地址
将数组名赋值给一个指针时,只是表示将数组首地址赋值给它,而不是把整个数组的内容赋值过去。

Int a[ 4]={1,2,3,4};
int* p=a;
int* p =&a[0]; //等价与上面那句

访问数组的元素:
1)p+1 表示指向数组的下一个元素 P+1*sizeof(int)
2)p-1 表示指向数组的下一个元素

*p++ 表示*(p++)=*p,

用数组指针遍历数组
for (int i=0; i<n; i++)
{
printf("%d\t",*p++);//先输出元素,然后指针后移一个数

注意:这里只有用指针可以,不能替换成数组名,这也是数组名和数组指针的最大的区别,数组名是常量不能变,而指针是变量

}
对于一维数组,获取a[i]的地址有几种方法?
1)&a[i]
2)a+i
3)int *p=a;p+i

一维指针数组:
一个数组元素的值是指针。
定义:
数组类型 * 数组名[数组长度]

指针数组的使用:
int a=3,b=4,c=5;
int *pa[3]={&a,&b,&c}

*pa==pa[0]=&a;

两个指针变量之间的运算:
1)减法运算
常见用法:两指针都指向同一个数组
i,判断两个指针指向的元素是否连续
ii,判断两个指针变量之间相隔几个元素。 (p-p1)/sizeof(int)

不能用加法运算,会越界的,减法时,也要是指向同一个数组的
2)关系运算
p1>p
1 p1在高位
0 P在高位,或是指向同一位置

二维数组中指针的理解:
对于二维数组,其中数组名和相应指针的关系理解起来会有困难,我 的一种理解方式是将二维数组考虑成三级地址索引的数据结构。第一级地址是数组名a(数组指针),通过a可以索引到二级地址a[0](行指针),通过行指针可以索引到三级地址&a[0][0],通过三级地址就能找到相应 的元素了。
举个例子,对于二维数组:a[3][4]

第一级地址中存储的只是行地址的地址,a表示第一行的行地址,a+1,找到的是第二行地址的地址,*(a+1)取出来的是第二行的首地址,*(a+1)+1,这个表示第二行第二列元素的地址;

注意:1)字符数组保存的字符串是保存到栈里面的,是可以进行修改的。但是数组名也就是数组的首地址是常量是不能修改的,也不能被赋值。

2)字符指针保存的字符串,只是字符串的地址,它指向的是常量区里的字符串,所以这个字符串是不能修改的,但是指针是变量,指针的指向可以修改。

黑马程序员-C语言数组与指针学习心得 ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、数组的赋值,以下几种都是正确的: 1、int ages[5]={1,2,3,4,5}; 2、int ages[5]={1,2};    //开辟的数组内存还是20个字节 3、int ages[5]={[3]=3,[4]};//只给在下标3和4的数组赋初值 4、int ages[]= 阅读详情

相关推荐

黑马程序员——C语言基础——指针编程练习题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 今天复习了一下指针的相关知识,并且在网上搜了一道小的编程练习题,大概题意如下: 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。

Elors的博客 6457

Java中数组的定义与使用(一)

如果说现在要求你定义100个整型变量,那么如果按照之前的做法,可能现在定义的的结构如下: int i1, i2, i3, ... i100; 但是这儿时候如果按照此类方式定义就会非常麻烦,...

mrbacker的博客 96万+

如何手动打包Linux(麒麟系统)的Qt程序

Qt在windows上有自带的windeployqt来帮助打包程序,但是对于linux系统来说Qt并没有自带对应的打包程序。尽管存在开源的linuxdeployqt打包程序,但是在使用的过程中会出现很多问题,对于arm架构的系统来说需要编译并修改源码等等。确定你程序所需要的插件,然后将你使用的Qt版本对应的插件复制到plugins里边。你可以根据各个库后面的路径来找到对应的库,并将它们全部复制到之前创建的lib目录下。复制你的可执行程序到bin目录下(将 your_executable。

qq_45903233的博客 3610

JAVA两个引用指向同一个数组

在这段程序中,arrayB是通过arrayA赋值得到的,并不是NEW出来的,所以他们内部存储的地址值是一样,他们指向的是同一个数组。 arrayA与arrayB即为引用。可以理解为C语言中的指针,都是存储一个内存地址值,指向一块内存。 引用与指针的区别: 1.指针是占用一块内存的,在32位电脑当中,占用4个字节,在64位中占用8个字节。所以指针也是有地址的,比如说二级指针。引用并没有地址,只是一...

chen404897439的博客 1468

YT8531 PHY芯片硬件设计与MDIO/RGMII实战指南

以太网PHY芯片是FPGA系统实现网络通信的物理层核心,其关键在于标准接口(如MDIO管理总线和RGMII数据接口)的正确实现与协同。MDIO作为IEEE 802.3定义的低速配置通道,负责寄存器级控制与状态监控;RGMII则通过双沿采样精简引脚,在千兆速率下兼顾性能与PCB布线可行性。技术价值体现在电压兼容性(支持1.8V/2.5V/3.3V)、可编程时序调节(RX_DELAY/TX_DELAY)及多级环回测试能力,显著提升国产FPGA平台(如Xilinx Zynq)的工程鲁棒性。典型应用场景涵盖嵌入式网

weixin_42453228的博客 1337

Vue3+Vite+Electron桌面应用开发:从零到打包的完整避坑指南

本文是一份详尽的Vue3+Vite+Electron桌面应用开发实战指南。文章从项目初始化、环境配置、主进程构建、Vite深度优化,到最终的打包配置与优化,系统性地讲解了使用现代前端技术栈开发跨平台桌面应用的完整流程,并重点分享了开发与打包过程中的常见“坑点”与解决方案,旨在帮助开发者高效构建稳定可交付的桌面端应用。

hh234的博客 109

JAVA数组的指针特性

JAVA数组的指针特性忙于项目管理,有阵子没有关注具体代码实现了,会看一些代码还是有些恍惚,故抽出时间重新总结以前所学,技术是根本再忙也不能荒废: 1, 静态初始化与动态初始化的原理是一样的 2,java数组名就是指针 3,常数组即常指针,可改值不可改地址 网上摘了现成的代码直接跑一边就能总结出指针特性。代码块代码块语法遵循标准markdown代码,例如:package transformation

jiangbo1984的专栏 1609

关于Vscode配置Unity环境时的一些报错问题(持续更新)

3.找到设置文件,添加如下代码,用于告诉VSCode)在处理 C# 项目时优先使用 C# 扩展来加载和管理项目,而不是使用 C# Dev Kit 或其他扩展。1.很可能是unity的插件版本问题,打开window > package manager将。2.很可能是项目文件的问题,建议unity打开edit > perfercenes。3.手动重装其他版本的.Net框架(去官网找,多下几个无所谓的)解决:(由于造成问题不一样,所以建议都尝试一次)下载net请求超时(一般都会超时很正常的)

bug制造机 1890

黑马程序员C++学习笔记

C++基础入门 1 C++初识 1.1 第一个C++程序 编写一个C++程序总共分为4个步骤 创建项目 创建文件 编写代码 运行程序 1.1.1 创建项目 ​ Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开 1.1.2 创建文件 右键源文件,选择添加->新建项 给C++文件起个名称,然后点击添加即可。 1.1.3 编写代码 #include<iostream> using namespace std; int main() { cout &

weixin_46015291的博客 6457

FSMC驱动LCD显示屏学习2

液晶显示器,简称 LCD(Liquid Crystal Display)相对于上一代 CRT 显示器 (阴极射线管显示器),LCD显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点,因而它成为了现在的主流电子显示设备液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态,但是它的分 子排列却和固体晶体一样非常规则,因此取名液晶。

usjjjsj的博客 1696

uniapp开发小程序保存图片权限获取失败一直走fail?本地能保存,线上版就不行! 原来是这个问题!

通过这次经历,我发现线上版小程序和开发版、体验版的权限控制差异较大。如果你也遇到类似的问题,首先要检查是否已勾选“采集用户隐私”,并确保在提交审核时配置了隐私条款。这个设置非常关键,避免像我一样浪费了不少时间和版本。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1078

【C++】黑马程序员-C++基础语法学习笔记

根据黑马程序员C++课程内容,结合讲义,将自己学习C++的过程中将自己觉得有必要记下的笔记进行整理,方便复习回顾,编程环境为VSCode。编写代码: 运行程序:作用: 在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码两种格式通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明 多行注释: /* 描述信息 */ 通常放在一段代码的上方,对该段代码做整体说明 多行注释快捷键: ①注释/取消:Ctrl+Shift+/ ②注释:Ctrl+K+C ③取消注释:Ctrl+K+U作用:给一段指定的内

qq_62361050的博客 1792

2025年CSP-J复赛真题及题解:T4 多边形(polygon)

2025年CSP-J复赛真题及题解:T4 多边形(polygon)

王老师青少年编程 1719

黑马程序员C语言基础(第六天)指针

https://www.bilibili.com/video/BV1jW411K7v2/?p=70&spm_id_from=pageDriver 文章目录指针概述内存物理存储器和存储地址空间内存地址指针和指针变量指针基础知识指针变量的定义和使用通过指针间接修改变量的值指针大小野指针和空指针(wild pointer & null pointer)万能指针void *const修饰的指针变量指针和数组数组名指针法操作数组元素指针加减运算1)加法运算2)减法运算指针数组多级指针指针和函数函数形参

Dontla的博客 2420

基于STM32、HAL库的ADE7880ACPZ-RL电能计量芯片驱动程序设计

@retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)PA6 (MISO) <--> SDO (SPI数据输出)PB0 (CS) <--> /CS (片选,低有效)

corlin6688的博客 668

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C++基础教程(黑马程序员讲义)

文章目录C++基础入门1 C++初识1.1 第一个C++程序1.1.1 创建项目1.1.2 创建文件1.1.3 编写代码1.1.4 运行程序1.2 注释1.3 变量1.4 常量1.5 关键字1.6 标识符命名规则2 数据类型2.1 整型2.2 sizeof关键字2.3 实型(浮点型)2.4 字符型2.5 转义字符2.6 字符串型2.7 布尔类型 bool2.8 数据的输入3 运算符3.1 算术运算符3.2 赋值运算符3.3 比较运算符3.4 逻辑运算符4 程序流程结构4.1 选择结构4.1.1 if语句

念去去 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

黑马程序员C++学习总结【基础篇】

附:参考自哔哩哔哩黑马程序员所做的学习笔记

小幸运召唤师的博客 1322

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Visual Studio 2022版本 B站黑马程序员C++自学分享-第一阶段(主要包括:自己敲的代码、通过注释来备注上自己对代码的理解)

黑马的课程里面分为了三大阶段 一、第一阶段 C++基础语法入门 对C++有初步了解,能够有基础编程能力 二、第二阶段 C++核心编程 介绍C++面向对象编程,为大型项目做铺垫 三、第三阶段 C++提高编程 介绍C++泛型编程思想,以及STL的基本使用 ※※※我会一个阶段发一个文章,一共发布三个文章来把学习的代码还有自己在代码旁边标注的对于这些代码的理解和心得体会一起分享给大家!!!

codeLearnerEternally的博客 3857

C++基础(黑马程序员)

t水平制表一般为8个空格,使用制表符后显示的长度不一致,是因为使用制表符是把输出的切入点移动到下一个能被8整除的位置上。当大于等于八格,小于十六格,补足十六格;long(长整型) Windows为4字节,Linux为4字节(32位),8字节(64位)变量和常量名可以包含字母、数字、下划线区分大小写,不可以数字作为开头,同时避开关键字。两个小数可以相除,除数不可以为0,两个小数不可以取模(取余)两个整数相除结果依然是整数,10/3=3,10%3=1。赋值运算符:=、+=、-=、*=、/+、%=

weixin_44944522的博客 361

黑马程序员C++学习笔记<第一阶段_基础篇>

这里写自定义目录标题前言1初识C++1.1第一个C++程序1.1.1创建项目2数据类型3运算符4程序流程结构5数组6函数7指针8结构体新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 配套视频网址: 黑马程序员:htt

qq_45283176的博客 4498

C++黑马程序员网课:我的学习心得与笔记(更新中)

黑马程序员c++笔记

2404_82622750的博客 1282

黑马程序员C++学习总结【核心篇】

附:参考自哔哩哔哩黑马程序员所做的学习笔记

小幸运召唤师的博客 2269

【C++学习】(基于哔哩哔哩黑马程序员)之基础编程(下)

一、数组 一维数组;算法:冒泡排序;二维数组 二、函数 函数的定义;函数的调用;值传递;函数的声明;函数的分文件编写 三、指针 概述;空指针和野指针;const修饰指针;指针、数组、函数 四、结构体 定义和使用;结构体、数组、指针

学习中 1168

【黑马程序员】————指针

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、指针变量的定义 1. 格式:变量类型 *指针变量名;2. 举例:int *p; char *p2;3. 注意:定义变量时的*仅仅是指针变量的象征 4.指针变量只能存储地址 5.指针就一个作用:能够根据一个地址值,访问对应的存储空间6.指针变量p前面的int:指针变...

aa123321621的博客 169

黑马程序员-数组与指针

数组的基本概念 数组是构造类型。 数组就是用来存储一组数据的 数组的特点 只能存放一种类型的数据,比如int类型的数组、float类型的数组,里面存放的数据称为“元素” 数组的定义 元素类型 数组名[元素个数]; 比如:int ages[3]; 简单使用 简单初始化:int ages[5] = {19, 19, 20, 21, 25}; 元素有顺序之分,每个元素都有一个唯一的下

cao4744的专栏 498

黑马程序员C++基础编程_7.指针

本文介绍了C++指针的基础知识,主要内容包括:指针的基本概念和作用;指针变量的定义和使用方法;指针所占内存空间大小;空指针和野指针的区别及注意事项;const修饰指针的三种情况;指针与数组、函数的结合使用,包括数组遍历和地址传递修改实参;最后通过冒泡排序案例展示了指针、数组和函数的综合应用。文章强调指针操作内存的特性,并提供了各类指针操作的语法示例和注意事项,帮助理解指针在C++编程中的核心作用。

xiayulinlll的博客 402
上一篇: 黑马程序员---学习笔记7:指针
下一篇: 黑马程序员---学习笔记9:构造类型和结构体
七分热度_HD
博客等级 码龄14年 12粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值