黑马程序员---学习笔记7:指针

黑马程序员-通讯录 ------- android培训、java培训、期待与您交流! ---------- 这是黑马视频里用c语言实现的一个通讯录,包涵查找联系人,添加联系人,删除联系人等 功能全,代码简单,思路清晰,很适合初学者。 阅读详情

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


概念:内存单元的编号也叫做地址,通过这个地址可以找到相应的内存单元,通常把这个地址叫做指针

好处:
1)为函数提供修改调用变量 的灵活手段。
2)让程序有多个返回值
3)可以改善某些程序的效率(传地址就可以了,不用传整个数据块)
4)为动态数据结构(二叉树,链表)提供支持

通过变量名获取变量的值:直接存取
从地址开始,连续获取固定个数的存储单元里面的值:间接存取
 
指针变量:存放地址的变量

定义一个指针变量:
1)指针类型说明符,说明该指针指向的地址存储什么类型的数组,会使用到几个存储单元,void类型,表示的任意类型,与之前定义函数时表示,无返回值不同,需要注意
2)指针变量名
3)变量值(地址),定义变量的时候一定要给定一个值,如果没有,会造成悬空指针,没有指向,从而不能存储值

注意事项:
1)“*”必须有
2)指针变量不能用来存放数值,只能用来指向给定类型数组的存储地址,否则会给一个警告
3)指针变量,也分局部变量和全局变量

指针变量的使用:定义--->初始化--->使用指针变量,间接操作

指针变量需要用地址初始化:
1)定义同时初始化
(1)完全初始化
int *p=&a;p指向变量a;
(2)部分初始化
int *p=&a,*p2; 减少这种初始化,最好是定义时初始化

2)先定义后初始化
先定义后,指针里面是垃圾值,称为野指针,尽量不要这样

3)如果定义了一个指针,暂时不知道指向哪个值,怎么办?
int *p=NULL; NULL是空(0)
等价于
int *p=0; 这样把一个指针指向空,什么也不指

常见错误:
1)int *p=1000;应该赋值地址,而不是常量。

用*获取指针变量指向的存储空间的内容。

有关的两个运算符:
1)& 取地址运算符
2)* 指针运算符(间接访问运算符)

*的两种用法:
1)定义一个指针
2)存取指针变量指向存储空间的内容

指针变量如果不初始化 的后果:
1)值是一个垃圾值,很可能存放系统程序的地址,造成系统崩溃。

在函数调用时,参数是指针的话,是地址传递,而不是值传递,调用函数操作的也是原数据,而值传递却是修改的新数据,从而无法对原数据进行改变

指针的应用场景:
1)在被调函数中可以修改主调函数中的变量值
2)让函数有多个返回值
这实际上是使用了,第一个特点:改变原参数的值。操作方式:将需要修改 的值的地址通过实参传递到被调函数中,在被调函数中对其中的值进行修改,这样就达到了返回多个值的效果(其实是修改了多个,主函数中的数值)

二级指针:一个指针变量存放是另外一个指针变量的地址

为什么指针要区分类型?
在同一编译环境下,一个指针变量所占用的存储空间是固定的。
指针使用的原理是:当指针获得一个地址后,指针从相应的地址开始读取数据,读取的多少由指针的类型决定,Int类型的指针读取4个字节的内容,double类型的指针读取8字节的内容,char类型的指针读取一个字节的内容,读取了这些二进制的代码之后,它会按照相应类型的组合方式组合成相应的数据。如果不区分指针类型,就无法根据不同的数据类型进行数据的读取,造成程序错误。

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

相关推荐

用友U8库龄分析避坑指南:物料出入库日期计算的5个常见错误

本文深入剖析了在用友U8系统中进行库龄分析时,物料出入库日期计算的五个常见陷阱。从数据源选择、业务类型过滤、计价方式逻辑、期初数据处理到查询性能优化,逐一解析错误根源并提供避坑指南,帮助企业获得准确的库龄数据,有效管理库存与资金风险。

weixin_29209801的博客 456

黑马程序员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

手把手拆解:储能电站如何实现‘孤岛运行’与‘黑启动’?从SVPWM控制到无缝并网

本文深入解析储能电站的孤岛运行与黑启动技术,从SVPWM控制策略到电网重构实战。通过详细的三环控制架构和黑启动五阶段技术路线,展示储能电站在电网故障时如何快速切换为独立电压源并实现电网重建。文章还探讨了虚拟惯量补偿、多站协同控制等前沿技术,为电力系统应急恢复提供关键解决方案。

weixin_30509393的博客 306

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

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

qq_62361050的博客 1792

maya中的几个热盒(空格、shift、w键)

maya中许多功能打包放进了不同的热盒中,让我们使用起来更加的便捷,熟练掌握后可以大大提升了建模速度。按下不同按键后鼠标不需要精确点到某个图标,往某个方向滑滑滑就打开了相应功能,非常的炫酷和迅猛。

m0_71983242的博客 1756

Windows上python的spark环境搭建

1.安装好JDK 下载并安装好jdk-12.0.1_windows-x64_bin.exe,配置环境变量: 新建系统变量JAVA_HOME,值为Java安装路径 新建系统变量CLASSPATH,值为 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(注意最前面的圆点) 配置系统变量PATH,添加 %JAVA_HOME%bin;%JAVA_HOME%jrebin 在CMD中输入:java或者java -version,不显示不是内部命令等,说明安装成功。

weixin_43915303的博客 652

【C++】黑马程序员《C++从入门到精通》

黑马程序员《C++从入门到精通》--学习笔记第八部分:bug与思考01、iostream和iostream.h和stdio.h的区别02、#define和const的区别03、using names std 什么意思?04、数据类型的意义?第一部分:基础入门知识(1-71)01、课程安排02、C++书写helloworld03、程序的注释04、变量05、常量06、关键字07、标识符命名规则08、数据类型第二部分:通讯录管理系统(01-12)0102第三部分:C++进阶知识(01-64)0102第四部分:职工

浪里小飞侠的博客 2万+

Mendix 开发实践指南|Mendix平台概览

低代码开发是一种将编码从文本形式转变为视觉形式的应用开发方法。它提供了一个模型驱动的、拖放式的界面,而不是传统的编码环境,使得各种技能水平的开发者——包括专业开发人员、新手、主题专家、业务利益相关者和决策者——都能使用低代码工具来构建驱动价值的企业业务应用。低代码的核心在于提高开发的可访问性和效率,让更多人能够参与到应用开发中来​​。Mendix适用于多种应用场景,包括企业级应用、移动应用、物联网(IoT)应用和微服务架构等。

多年搬砖的经验分享... 4413

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

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

小幸运召唤师的博客 2269

【AI测试干货】软件测试 - 全流程提示词完整体系

本篇教程是一套专为软件测试工程师打造的 AI 协作提示词体系。从测试计划制定、用例设计、自动化脚本开发、缺陷管理,到测试报告生成,每个环节都提供了结构化的提示词模板,帮助测试人员高效利用 AI 提升工作质量。

blues_C的博客 353

整车电检工艺流程

本文是笔者在从事汽车行业智能制造领域过程,对于整车电检工艺流程的理解与总结。

qq_40664711的博客 1万+

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

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

xiayulinlll的博客 402

GeoServer下载与安装(详细图文教程)

GeoServer官方版可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。

大剑师兰特的GIS世界 3276

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

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

小幸运召唤师的博客 1322

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

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

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

黑马程序员c++笔记

2404_82622750的博客 1282

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

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

weixin_44944522的博客 361

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

Dontla的博客 2420

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

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

aa123321621的博客 169

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

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

codeLearnerEternally的博客 3857

黑马程序员——iOS核心基础(13-14天)-黑马程序员-专题视频课程

C语言基础13-14天。其中包括预处理与结构体。

heima_cxy的博客 247

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++学习笔记<第一阶段_基础篇>

这里写自定义目录标题前言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++核心编程学习笔记(完结)

黑马程序员学习笔记——C++核心编程。除上课讲的内容以外还有一些自己的理解。

1万+

黑马程序员学习笔记-C指针小结

点击打开链接 点击打开链接 ASP.Net+Unity开发、点击打开链接 .Net培训、期待与您交流!">点击打开链接 点击打开链接 黑马程序员学习笔记-C指针 1、  指针简介: 指针是C语言中非常重要的数据类型,是C语言的精华 2、 指针变量定义: 格式:类名标识符 *指针变量名; 指针变量只能存储地址 指针就一个作用:能够根据一个地址值,访问对应的存储空间 指针变量p前面的

yangying514的专栏 871

黑马程序员—关于对指针的理解

一、指针变量的定义 1. 格式:变量类型 *指针变量名; 2. 举例:int *p;   char *p2; 3. 注意:定义变量时的*仅仅是指针变量的象征 4. 指针变量只能存储地址 5. 指针就一个作用:能够根据一个地址值,访问对应的存储空间 6. 指针变量p前面的int:指针变量p只能指向int类型的数据 7. 指针变量未经过初始化,不要

dsxcoolok的专栏 603

黑马程序员——C语言——指针

--android培训、java培训、ios学习型技术博客、期待与您交流!--------- 指针的基本概念: 内存单元的编号也叫做地址,既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址叫做指针。(对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元的内容。) 使用指针的好处: 1)为函数提供修改调用变量的灵活手段。 2)让函数有多个返回值。 3

LucienER的博客 520
上一篇: 黑马程序员---学习笔记6:字符串
下一篇: 黑马程序员---学习笔记8:数组指针
七分热度_HD
博客等级 码龄14年 12粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值