c++ 动态分配数组_C/C++编程笔记:「C语言指针」民间解读版本
相信很多同学在初学C语言时候,都会遇到遇到一个问题:指针,永远的神!
好消息,这个痛点将会在这篇文章得到解决,妈妈再也不用担心我的学习了!
一说指针,第一反应,指针是一种数据类型。
c语言学习,重点就是两个,一个是数据的数据类型,一个就是程序的结构。
整个C语言学习体系,在初学阶段就接触基本数据类型,整形实型字符型;然后是三大基本结构顺序循环分支,随后的内容几乎都是对数据类型的扩充结构体 指针 链表 数组……
那么数据类型是什么?
数据类型就表示它能够存储什么类型的数据,整型有什么用呢?我在什么情况下需要使用一个int x呢?简单,你想获取一个存储单元,用于存储一个整型数据;同理,你定义一个实型是为了获取一个范围那么大,精度那么多的一个实型变量。
那么指针是一种什么类型的变量呢?什么情况下我需要定义一个指针,我要用这个指针存储什么样子的数据?
只要有数据类型,就要想:这种类型怎么定义,这种数据类型存储什么形式的数据。
指针,用于保存某个单元的地址,你只要想存储某个单元的地址,你就需要定义一个指针,接着,你存一个地址的目的是什么?是要对一个单元进行间接访问。
访问单元的方式就是两种:直接访问和间接访问。
直接访问就是直接使用变量名,系统就会找到这个变量所在的单元,对他进行或读或写操作。
只要你在表达式使用了变量名,系统就会通过名字找到他所在的单元,找到做什么?或读或写,到底是读还是写,取决于变量名所在的位置,如果出现在赋值号左边,就是写入一个值,如果是打印到屏幕上,就是进行读。
对于间接访问,先要定义一个指针,然后用这个指针指向你想要访问的单元,在指针变量名前面加一个*术语叫做间接运算符,可以把指针指向的内容表示出来。
为什么要使用间接访问?
使用变量名直接访问单元,它不香吗?为什么要引入间接访问,使用间接访问有好处吗?间接访问不是自己给自己找别扭吗?
不是!间接访问有非常重要的作用,主要体现在几个方面:
(1)为了在函数中改变主调函数的存储单元,没有间接访问你就不可能实现.
(2)使用间接访问为了动态分配存储单元,从而对单元进行操作,并且在此基础上实现链式存储结构,也就是链表.
(3)为了能够动态分配存储单元,并在此基础上实现动态数组。之前,定义变量,数组是静态数组获得10个存储空间,而数组一旦分配好存储空间,长度就不能变化。但是动态数组不一样,当满了以后可以扩充空间。
(4)通过指针访问一段连续的存储空间
如果使用直接访问,使用变量名就只能访问我单元本身,而使用间接操作有了指针,p指向一个单元,不仅可以通过*p把当前指针指向的单元间接表示,还可以通过指针的移动把存储空间前后任意的存储单元表示出来。
可以说,指针是C语言的灵魂。一个人的C语言基础好不好,很大一部分都看他对于指针的理解程度有多深。所以希望同学们可以对指针的内容反复研习,反复实践。
感谢阅读,学习使人强大。
如果你想更好的提升你的编程能力,成为一个强大的C/C++程序员!不妨和一些志同道合的小伙伴一起学习成长!
C语言C++编程学习交流圈子,关注+私信【C/C++编程】微信公众号:C语言编程学习基地
有一些源码和资料分享,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!
c++ 动态分配数组_C/C++编程笔记:「C语言指针」民间解读版本相关推荐
- visual c++ 6.0原版_C/C++编程笔记:C语言函数指针的理解与使用,就是这么简单明了!...
1.函数指针的定义 顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: 看看上面三个表达式分别是什么意思? C)这很容易,fun3是函数名,p1,p2是参数,其类型为char *型 ...
- .net调用c++方法时如何释放c++中分配的内存_C/C++编程笔记:C语言编程知识要点总结!大一C语言知识点(全)...
一.C语言程序的构成 与C++.Java相比,C语言其实很简单,但却非常重要.因为它是C++.Java的基础.不把C语言基础打扎实,很难成为程序员高手. 1.C语言的结构 先通过一个简单的例子,把C语 ...
- status c语言_C/C++编程笔记:C语言编程风格个人总结,初学小白可借鉴
总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...
- 取消对 null 指针“l”的引用。_C语言编程笔记丨C 语言指针 5 分钟教程
指针.引用和取值 什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量.在这份教程里"引用"表示计算机内存地址.从指针指向的内存读取数据称作指针的取值 ...
- c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- c语言求阶乘和的流程图_C/C++编程笔记:C语言 rand() 随机函数,深入解析程序随机数!...
各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布. C的标准函数库提供一随机数生成器rand(定义在stdlib.h),能返回 ...
- c++for循环求最大公约数_C/C++编程笔记:C语言 for 循环精讲!实例讲解带你吃透...
在循环入口处定义循环三要素,循环条件为真时执行循环体,先判断再循环. 语法 C++中 for 循环的语法为: for (init; condition; increment) { statement( ...
- c语言遍历文件内容_C/C++编程笔记:C语言开发电脑益智游戏【扫雷】(源代码分享)...
咱们先和大家说好,本次C语言开发的扫雷游戏是通过Easy X实现的,但是很多和我一样的新手,一开始不知道Easy X是什么,到时源码拿过去写之后,运行报错.Easy X是很多和我一样的新手在学习的时候 ...
- c++ 游戏_C/C++编程笔记:C语言实现连连看游戏,项目源码分享
本篇文章分享看题目就知道是写给初学者的,学的比较好的小伙伴也可以将自动算法等一些知识给加进去,希望对大家有帮助! 好了,当我们所有的准备工作做好之后,我们就可以来编写我们的C语言连连看游戏了! 其实这 ...
最新文章
- RandLA-Net测试
- 百度定位SDK实现获取当前经纬度及位置
- 五种网络管理技巧优化网络办公环境
- RabbitMQ的Work模式
- 信息系统项目管理师考前冲刺第二天:项目整体管理
- Linux系统:centOS 7 忘记密码怎么办?
- sqlite工具类 java_Java之泛型、集合工具类
- AngularJs自学心得
- jQuery插件FontSizer实现自定义动态调整网页文字大小
- 求二进制数中1的个数(转)
- 在执行 php artisan key:generate ,报 Could not open input file: artisan 错误
- 不使用库函数将字符串转换为数字
- [No0000123]WPF DataGrid Columns Visibility的绑定
- 为什么动物不需要吃盐
- 遇到个别手机前置摄像头相差90度的怪事
- PBRT 阅读 第一章
- 游戏加速器安卓apk代码
- 2022眼视光展,护眼产品展,眼睛健康展,视力康复展
- Lesson 55 The Sawyer family
- Ubuntu Linux 系统安装、分区规划
热门文章
- 日语python怎么说_python+Mecab,一次性学会日语分词
- php 代码符号,网站开发编程中的特殊符号处理_php
- php里的%是什么意思,大家帮小弟我看下这段代码中的“%”是什么意思
- java linux 字体设置_Linux操作系统JDK中文字体设置方法介绍
- 蓝桥杯省内模拟赛解题过程
- 等差数列划分 II - 子序列(动态规划)
- php模拟登录qq邮箱_PHP 利用QQ邮箱发送邮件的实现
- html dot标签,html – CSS Dot符号命名约定
- web目录字典_Metasploit -- 目录详解及常用命令
- java.util.zip.ZipException: error in opening zip file