c++ 动态分配数组_C/C++编程笔记:「C语言指针」民间解读版本

相信很多同学在初学C语言时候,都会遇到遇到一个问题:指针,永远的神!

f83a949d53d89e5141b19d4895f58263.png

好消息,这个痛点将会在这篇文章得到解决,妈妈再也不用担心我的学习了!

一说指针,第一反应,指针是一种数据类型。

c语言学习,重点就是两个,一个是数据的数据类型,一个就是程序的结构。

整个C语言学习体系,在初学阶段就接触基本数据类型,整形实型字符型;然后是三大基本结构顺序循环分支,随后的内容几乎都是对数据类型的扩充结构体 指针 链表 数组……

19733371bf958ddf3a58e09e47dd0e9a.png

那么数据类型是什么?

数据类型就表示它能够存储什么类型的数据,整型有什么用呢?我在什么情况下需要使用一个int x呢?简单,你想获取一个存储单元,用于存储一个整型数据;同理,你定义一个实型是为了获取一个范围那么大,精度那么多的一个实型变量。

那么指针是一种什么类型的变量呢?什么情况下我需要定义一个指针,我要用这个指针存储什么样子的数据?

af90d30dc49d02c56c2922b44de8788e.png

只要有数据类型,就要想:这种类型怎么定义,这种数据类型存储什么形式的数据。

指针,用于保存某个单元的地址,你只要想存储某个单元的地址,你就需要定义一个指针,接着,你存一个地址的目的是什么?是要对一个单元进行间接访问。

访问单元的方式就是两种:直接访问和间接访问。

4963b3feedf8fafe1457b38fbc263e27.png

直接访问就是直接使用变量名,系统就会找到这个变量所在的单元,对他进行或读或写操作。

只要你在表达式使用了变量名,系统就会通过名字找到他所在的单元,找到做什么?或读或写,到底是读还是写,取决于变量名所在的位置,如果出现在赋值号左边,就是写入一个值,如果是打印到屏幕上,就是进行读。

对于间接访问,先要定义一个指针,然后用这个指针指向你想要访问的单元,在指针变量名前面加一个*术语叫做间接运算符,可以把指针指向的内容表示出来。

为什么要使用间接访问?

使用变量名直接访问单元,它不香吗?为什么要引入间接访问,使用间接访问有好处吗?间接访问不是自己给自己找别扭吗?

不是!间接访问有非常重要的作用,主要体现在几个方面:

7596cf36a34eba843467a8f6cb86d6ae.gif

(1)为了在函数中改变主调函数的存储单元,没有间接访问你就不可能实现.

(2)使用间接访问为了动态分配存储单元,从而对单元进行操作,并且在此基础上实现链式存储结构,也就是链表.

(3)为了能够动态分配存储单元,并在此基础上实现动态数组。之前,定义变量,数组是静态数组获得10个存储空间,而数组一旦分配好存储空间,长度就不能变化。但是动态数组不一样,当满了以后可以扩充空间。

(4)通过指针访问一段连续的存储空间

7a5c7d88f91acff899aec992104745b8.png

如果使用直接访问,使用变量名就只能访问我单元本身,而使用间接操作有了指针,p指向一个单元,不仅可以通过*p把当前指针指向的单元间接表示,还可以通过指针的移动把存储空间前后任意的存储单元表示出来。

可以说,指针是C语言的灵魂。一个人的C语言基础好不好,很大一部分都看他对于指针的理解程度有多深。所以希望同学们可以对指针的内容反复研习,反复实践。

感谢阅读,学习使人强大。

如果你想更好的提升你的编程能力,成为一个强大的C/C++程序员!不妨和一些志同道合的小伙伴一起学习成长!

C语言C++编程学习交流圈子,关注+私信【C/C++编程】微信公众号:C语言编程学习基地

有一些源码和资料分享,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!

37123d58f87c4b74792cfded4201b57c.png
5fcb01a5387803b0e28e7547a115103a.png

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

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

相关文章

安卓menu页面跳转_微信安卓版7.0.14内测!“发现小程序”页面大改版

除了安卓用户心心念念的“群备注”,“发现-小程序”面板也有大变动~话不多说,赶紧下载内测版体验新功能(后台回复【7014】,即可获取内测版下载链接)群备注:虽迟但到此前iOS版微信率先上线的新功能,这次在安卓内测版中也…

css before after用法_CSS 伪元素基础知识:content 与counter 实用技巧(二)

在CSS 伪元素基础知识:before 与after (一),笔者已经介绍过 CSS 里的::before 和::after 这两个伪元素,以及content 相关的用法,这篇将针对content 搭配counter (计数器) 进行一些有趣的应用,相信熟练之后搞不好能做出…

c语言怎么让写的函数兼容int型和char型_既然C语言void指针是“万能指针”,那么malloc还需类型转换吗?...

在C语言程序开发中,动态内存分配是不可避免的,而调用 malloc()/free() 库函数实现这一过程是方便的,事实上,在很多C语言程序中,malloc/free 库函数的使用相当频繁,它俩的C语言函数原型如下,请看…

mysql datetime最小值_MySQL的5种时间类型的比较

日期时间类型占用空间日期格式最小值最大值零值表示DATETIME8 bytesYYYY-MM-DD HH:MM:SS1000-01-01 00:00:009999-12-31 23:59:590000-00-00 00:00:00TIMESTAMP4 bytesYYYY-MM-DD HH:MM:SS197001010800012038 年的某个时刻00000000000000DATE4 bytesYYYY-MM-DD1000-01-019999-1…

Mysql数据库的简单备份与还原_史上最简单的MySQL数据备份与还原教程

本文主要为大家详细介绍了史上最简单的MySQL数据备份与还原教程第一篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。数据备份与还原第一篇分享给大家,具体内容如下基础概念:备份,将…

mysql数据库云读取_云数据库 MySQL版

{"moduleinfo":{"banner_bigTit":"云数据库 MySQL版读写分离上线","banner_subTit":"自动扩展读写分离,性能提升不止一点","banner_link":"https://rdsnew.console.aliyun.com/console/index#/rd…

mysql查询并设置高亮_慢查询分析调优工具~mysqldumpslow

在日常的业务开发中,MySQL出现慢查询是很常见的,要么说明你家产品的增长性很好,要么就是你的SQL写的太烂了。所以对慢查询SQL进行分析和优化很重要,其中mysqldumpslow是MySQL服务自带的一款很好的分析调优工具。MySQL慢查询日志My…

非法的表达式开始_轮回、开始还是结束?

上节课说到&#xff0c;要打印0-9这十个数字&#xff0c;除了一个一个的 document.write 还有什么办法?下面介绍一个for语法for (var 变量 初始值; 结束判断表达式; 变量递增/递减) { 循环体&#xff0c;用于处理变量;}我们来实操一下for (var c0;c<9;cc1) { do…

sql 统计记录条数后 打印出所有记录_用SQL完成购买行为分析(下篇II)

&#xff08;接《用SQL完成购买行为分析&#xff08;下篇I&#xff09;》内容&#xff09;12&#xff09;查询首条记录为fav&#xff0c;总记录条数为14的记录。将前面getNum(3)红框处替换为12&#xff0c;运行getNum(14)得到第2条记录的数量&#xff1a;替换为11&#xff0c;得…

library的英语怎么读音_library怎么读声音

library的英式读音和美式读音均为&#xff1a;[ˈlaɪbrəri]。library可作名词&#xff0c;其作名词时&#xff0c;中文意思有&#xff1a;图书馆&#xff1b;藏书楼&#xff1b;图书室&#xff1b;资料室&#xff1b;(书、激光唱片等的)个人收藏等含义。一、library 读音英式…

sift线特征提取代码_车道线检测LaneNet

LanNetSegmentation branch完成语义分割,即判断出像素属于车道or背景Embedding branch完成像素的向量表示,用于后续聚类,以完成实例分割H-NetSegmentation branch解决样本分布不均衡车道线像素远小于背景像素.loss函数的设计对不同像素赋给不同权重,降低背景权重.该分支的输出为…

mysql ehcache_MyBatis使用Ehcache作为二级缓存

特别说明&#xff1a;由于二级缓存是基于Mapper的&#xff0c;当你在不同的mapper中查询了相同的数据&#xff0c;例如不同的Mapper中有多表查询时结果中有相同的数据&#xff0c;当其中一个Mapper进行插入更新缓存时&#xff0c;另一个并没有插入更新&#xff0c;那么使用两个…

yii3正式版什么时候发布_华为mate50pro什么时候发布

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到文章了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。 …

shiro如何保证session不失效_请问在不加锁的情况下如何保证线程安全?

概念compare and swap&#xff0c;解决多线程并行情况下使用锁造成性能损耗的一种机制&#xff0c;CAS操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配&#xff0c;那么处理器会自动将该位置值更新为新值。否则&#xff0c;处理器…

externalreferences 命令在 sdi 模式下不可用_一个适合新手交互式Git命令学习项目

前言在我们日常工作开发中&#xff0c;Git是必不可少的版本控制软件&#xff0c;很多时候我们都用Git来管理我们的项目。比较常用的有Github&#xff0c;Gitlab&#xff0c;Stash等。因此对于Git命令的掌握是我们工作必备的能力。今天分享一个Git命令学习项目&#xff1a;learn…

sqlyong 删除数据能否撤回_数据结构知识点总结

some quoted by Fundebug&#xff1a;代码面试需要知道的8种数据结构(附面试题及答案链接)​zhuanlan.zhihu.comadded with other sources8 种常用数据结构数组栈队列链表图树哈希表priorityqueue1. 数组数组(Array)大概是最简单&#xff0c;也是最常用的数据结构了。其他数据结…

matlab 点云特征_基于点云的3D障碍物检测

击上方“新机器视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达基于点云的3D障碍物检测主要有以下步骤&#xff1a;点云数据的处理基于点云的障碍物分割障碍物边框构建点云到图像平面的投影点云数据的处理KITTI数据集KITTI数据集有四个相…

重定义 不同的基类型_镍及铁镍基耐蚀合金高温合金哈氏合金镍基合金之第一篇概述...

纯镍是一种重要的应用于工业的原材料&#xff0c;它除具有良好 的强度、塑韧性外&#xff0c;在卤族元素及其氢化物活泼性气体、苛 性介质、不含氧和氧化剂的还原性酸介质中还具有良好的耐 蚀性&#xff0c;因此纯镍作为耐蚀金属材料得到广泛应用。此外&#xff0c;由 于提高耐…

cad统计面积长度插件vlx_用了它,画cad施工图再也不加班了!

文尾左下角阅读原文看视频教程好课推荐&#xff1a;1、CAD2014&#xff1a;点击查看 2、室内CAD&#xff1a;点击查看 3、CAD2019&#xff1a;点击查看4、CAD2018&#xff1a;点击查看5、Bim教程&#xff1a;点击查看6、室内手绘&#xff1a;点击查看7、CAD三维&#xff1a;点击…

mysql 视图 查询速度慢_mysql 视图查询速度慢

场景&#xff1a;表 stockpooldata_flashCREATE TABLE stockpooldata_flash (id bigint(15) NOT NULL AUTO_INCREMENT,formula_id int(8) DEFAULT NULL,period_type tinyint(3) DEFAULT NULL,gpMarket int(4) DEFAULT NULL,gpcode varchar(20) DEFAULT NULL,ymd int(11) DEFAUL…