相信很多同学在初学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语言指针」民间解读版本相关推荐

  1. visual c++ 6.0原版_C/C++编程笔记:C语言函数指针的理解与使用,就是这么简单明了!...

    1.函数指针的定义 顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: 看看上面三个表达式分别是什么意思? C)这很容易,fun3是函数名,p1,p2是参数,其类型为char *型 ...

  2. .net调用c++方法时如何释放c++中分配的内存_C/C++编程笔记:C语言编程知识要点总结!大一C语言知识点(全)...

    一.C语言程序的构成 与C++.Java相比,C语言其实很简单,但却非常重要.因为它是C++.Java的基础.不把C语言基础打扎实,很难成为程序员高手. 1.C语言的结构 先通过一个简单的例子,把C语 ...

  3. status c语言_C/C++编程笔记:C语言编程风格个人总结,初学小白可借鉴

    总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...

  4. 取消对 null 指针“l”的引用。_C语言编程笔记丨C 语言指针 5 分钟教程

    指针.引用和取值 什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量.在这份教程里"引用"表示计算机内存地址.从指针指向的内存读取数据称作指针的取值 ...

  5. c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

  6. c语言求阶乘和的流程图_C/C++编程笔记:C语言 rand() 随机函数,深入解析程序随机数!...

    各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布. C的标准函数库提供一随机数生成器rand(定义在stdlib.h),能返回 ...

  7. c++for循环求最大公约数_C/C++编程笔记:C语言 for 循环精讲!实例讲解带你吃透...

    在循环入口处定义循环三要素,循环条件为真时执行循环体,先判断再循环. 语法 C++中 for 循环的语法为: for (init; condition; increment) { statement( ...

  8. c语言遍历文件内容_C/C++编程笔记:C语言开发电脑益智游戏【扫雷】(源代码分享)...

    咱们先和大家说好,本次C语言开发的扫雷游戏是通过Easy X实现的,但是很多和我一样的新手,一开始不知道Easy X是什么,到时源码拿过去写之后,运行报错.Easy X是很多和我一样的新手在学习的时候 ...

  9. c++ 游戏_C/C++编程笔记:C语言实现连连看游戏,项目源码分享

    本篇文章分享看题目就知道是写给初学者的,学的比较好的小伙伴也可以将自动算法等一些知识给加进去,希望对大家有帮助! 好了,当我们所有的准备工作做好之后,我们就可以来编写我们的C语言连连看游戏了! 其实这 ...

最新文章

  1. RandLA-Net测试
  2. 百度定位SDK实现获取当前经纬度及位置
  3. 五种网络管理技巧优化网络办公环境
  4. RabbitMQ的Work模式
  5. 信息系统项目管理师考前冲刺第二天:项目整体管理
  6. Linux系统:centOS 7 忘记密码怎么办?
  7. sqlite工具类 java_Java之泛型、集合工具类
  8. AngularJs自学心得
  9. jQuery插件FontSizer实现自定义动态调整网页文字大小
  10. 求二进制数中1的个数(转)
  11. 在执行 php artisan key:generate ,报 Could not open input file: artisan 错误
  12. 不使用库函数将字符串转换为数字
  13. [No0000123]WPF DataGrid Columns Visibility的绑定
  14. 为什么动物不需要吃盐
  15. 遇到个别手机前置摄像头相差90度的怪事
  16. PBRT 阅读 第一章
  17. 游戏加速器安卓apk代码
  18. 2022眼视光展,护眼产品展,眼睛健康展,视力康复展
  19. Lesson 55 The Sawyer family
  20. Ubuntu Linux 系统安装、分区规划

热门文章

  1. 日语python怎么说_python+Mecab,一次性学会日语分词
  2. php 代码符号,网站开发编程中的特殊符号处理_php
  3. php里的%是什么意思,大家帮小弟我看下这段代码中的“%”是什么意思
  4. java linux 字体设置_Linux操作系统JDK中文字体设置方法介绍
  5. 蓝桥杯省内模拟赛解题过程
  6. 等差数列划分 II - 子序列(动态规划)
  7. php模拟登录qq邮箱_PHP 利用QQ邮箱发送邮件的实现
  8. html dot标签,html – CSS Dot符号命名约定
  9. web目录字典_Metasploit -- 目录详解及常用命令
  10. java.util.zip.ZipException: error in opening zip file