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版微信率先上线的新功能,这次在安卓内测版中也…

查看mysql 日记 工具_mysqlbinlog(日志管理工具)

mysqlbinlog用于处理二进制的日志文件,如果想要查看这些日志文件的文本内容,就需要使用mysqlbinlog工具。1.mysqlbinlog命令的语法shell > mysqlbinlog [options] logfile1 logfile2 ...2.mysqlbinlog的选项-d, --databasename 仅显示指定数据库的转储…

python实现ping命令_[小菜随笔]python tkinter实现简单的ping命令

本文主要是介绍python图形界面上的按键与实际功能的对接,其实编程掌握了基础之后的学习应该都是靠自己去挖掘其他的在网上发现多半教程都是2的,故本文使用的是python3.5,其实也没什么区别,就有一些支持库改变而已首先我们使用pyth…

删除 索引 外键 mysql_MySQL无法删除外键约束中所需的索引

MySQL无法删除外键约束中所需的索引我需要更改现有数据库以添加列。 因此,我还想更新UNIQUE字段以包含该新列。 我试图删除当前索引但仍然收到错误MySQL Cannot drop index needed in a foreign key constraintCREATE TABLE mytable_a (ID TINYINT NOT NULL AUTO_IN…

python decorator_python 中的decorator

python 中decorator的作用就是一个包装的作用,所谓包装指在执行真正的函数之前或者之后,我们可以有一些额外的发挥余地。decorator形式如下def dec(arg1):print("dec",arg1)def func_replace(func):print("func_replace",func)def c…

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

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

python pandas缺失值处理_Pandas之缺失值处理

原标题:Pandas之缺失值处理本文作者:杨长青本文编辑:周聪聪技术总编:张学人好消息!!!爬虫俱乐部将于2019年5月2日至4日在武汉举行Stata编程技术五一训练营,此次采用理论与案例相结合…

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

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

python奖励多少钱_关于python的问题,好的高奖励!

我想设计一个猜数字程序:系统随机生成一个四位数a,之后用户也输入一个四位数b,这里,将进行判断:b中各个数位上的数字是否在a出现,有出现,那么将b中的那个数为上的数字定位Y......(简略...我想设计一个猜数字程序:系统随机生成一个四位数a,之后用户也输入一个四位数b,这里,将进行…

如何在mysql中添加用户_如何给mysql数据库添加一个用户

首先以root身份登录到MySQL服务器中。$ mysql -u root -p当验证提示出现的时候,输入MySQL的root帐号的密码。创建一个MySQL用户使用如下命令创建一个用户名和密码分别为"myuser"和"mypassword"的用户。mysql> CREATE USER myuserlocalhost I…

python可视化图表工具_酷炫的可视化图表工具来帮忙 深度评测五大Python数据可视化工具...

原标题:酷炫的可视化图表工具来帮忙 深度评测五大Python数据可视化工具不少Python用户的一大诉求是做出各种酷炫的可视化图表,而这就需要了解清楚工具特色,才好在制作不同类型图表顺利找到适合自己的那一款。今天就来聊聊五个Python数据可视化…

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…

python制作海报_生成海报(前端 | python)

我最近没有摸鱼,一直都在工作。只不过目前需要爬一点数据 python 做的,之后看机会分享一下。忙着忙着老大说要生成海报,有个活动要给每个用户来个分享图。想法PS 批处理?脚本? 能甩出去的活都甩出去,机智如…

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

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

python正负数转换,如何在Python中将负整数值转换为十六进制

I use python 2.6>>> hex(-199703103)-0xbe73a3f>>> hex(199703103)0xbe73a3fPositive and negative value are the same?When I use calc, the value is FFFFFFFFF418C5C1.解决方案Pythons integers can grow arbitrarily large. In order to compute the …

mysql 分表索引_mysql中,分表查询和索引查询哪个更快?

谢谢邀请!查询快慢主决的因素有很多,存储碎片、数据量大属于I/O类问题;表结构设计、查询语句属于技术是否熟练(经验)问题。对于你的分表快还是索引快的这个问题本身就是有问题的:在建立数据表的时候,索引是必须的&…

fluent python 第二版_Fluent Python 笔记(二):序列基础

目录:本篇开始总结 Python 基本的数据结构,大部分情况下,这些数据结构就已经够用了,不需要重复造轮子。首先是序列及其相关的操作。序列(Sequence)标准库中提供了很多序列类型,都是C实现的,效率很高。容器序…

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

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

mysql数据库整体备份和恢复_MySQL 数据库的备份和恢复

MySQL 数据库的备份和恢复  基本知识>>>>>>>  逻辑备份:  1.mysqldump(数据导出工具)  mysqldump options db_name[table_name]//备份单个数据库  mysqldump 选项 --database database-name1 [databases-name2]....//备份指定的数据库一个或者多…