1、指针到底是什么?
(1)、指针变量与普通变量的区别
 指针的实质就是一个变量,他跟普通变量没有任何本质区别。指针完整的名字应该叫做指针变量,简称为指针。
2、为什么需要指针?
(1)、指针的出现是为了实现间接访问。在汇编中都有间接访问,其实就是CPU的寻址方式中的间接寻址。
(2)、间接访问(CPU的间接寻址)是CPU设计时决定的,这个决定了汇编语言必须能够实现间接寻址,又决定了
    汇编之上的C语言也必须实现间接寻址。
(3)、高级语言Java/C#等没有指针,那么他们怎么实现间接访问?答案就是语言本身帮助我们封装好了。
3、指针使用三部曲:
     定义指针变量(int *p)、
     关联指针变量(p = &a // 让p指向变量a )(p = (int *)4 //让p指向内存地址为4的那个变量)
  解引用(*p = 555;//把555放到p所指向的变量中)
(1)、当我们int *p;定义一个指针变量p时,因为p是局部变量,所以也遵循C语言局部变量的一般规律(定义局部
变量并且未初始化,则值是随机的),所以此时p变量中存储的是一个随机的数字。
(2)、此时如果我们解引用p,则相当于我们访问了以这个随机数字为地址的内存空间。那这个空间到底能不能访问
到就不知道了(可能行也可能不行),所以如果直接定义指针变量未绑定有效地址就去解引用的话,几乎会出现大的bug。
(3)、指针绑定的意义就在于:让指针指向一个可以访问、应该访问的地方,指针的解引用是为了间接访问目标变量。

4、*星号在用于指针相关功能的时候,有两种用法:
  第一种:定义指针时,*结合前边的类型用于表明要定义的指针类型;
   int *p;  // *和int结合,表明p的类型是int *,也就是p指向int类型变量的指针。
  第二种:用于指针解引用,解引用时*p表示p指向的变量本身。
   int *p;
   int a = 32;
   p = &a;   //这个地方就是第二种用法,这里不能写 *p = &a; 这样写的意思就是把a的地址给了p所指向的
               那个变量(也就是地址为 内存中与p绑定在一起的那个内存空间里的数 的内存空间)。

C语言-指针到底是什么?的更多相关文章

  1. (转载)c语言指针学习

    前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水, ...

  2. 2-Linux C语言指针与内存-学习笔记

    Linux C语言指针与内存 前面我们对于: c语言的基本用法 makeFile文件的使用 main函数的详解 标准输入输出流以及错误流管道 工具与原理 指针与内存都是c语言中的要点与难点 指针 数组 ...

  3. c语言指针学习【转】

    前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水, ...

  4. C语言入门---第九章 C语言指针

    没学指针就是没学C语言! 指针是C语言的精华,也是C语言的难点. 所谓指针,也就是内存的地址,所谓指针变量,也就是保存了内存地址的变量.不过人们往往不会区分两者的概念,而是混淆在一起使用. ===== ...

  5. 闭嘴,给你一个数!1分钟,学完C语言指针,不扎手只扎心的针!

    序言 指针是C语言学习者绕不过的一道坎,也是C语言学习者不得绕过的一道坎.辨别一个人C语言学的好赖就看他对指针的理解怎么样.指针内容也是工作面试经常问到的问题.本文将带你重新认识那个绊倒你的指针,以解 ...

  6. 难搞的C语言指针你搞懂了多少

    C语言指针说难不难但是说容易又是最容易出错的地方,因此不管是你要做什么只要用到C指针你就跳不过,今天咱们就以 十九个例子来给大家简单的分析一下指针的应用,最后会有C语言视频资料提供给大家更加深入的参考 ...

  7. 最容易出错的C语言指针

    C语言指针说难不难但是说容易又是最容易出错的地方,因此不管是你要做什么只要用到C指针你就跳不过,今天咱们就以 十九个例子来给大家简单的分析一下指针的应用,最后会有C语言视频资料提供给大家更加深入的参考 ...

  8. C语言指针转换为intptr_t类型

    1.前言 今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量.由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针.感觉很奇怪,为何要将一个指针 ...

  9. [转]C语言指针学习经验总结浅谈

    指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...

随机推荐

  1. Visual Studio Code 断点调试配置方法(请按我的步骤 一定可以做到)

    1 visual studio code 的 extentions 里安装插件 debugger for chrome2 devtool: 'eval-source-map', cacheBustin ...

  2. web.xml的配置过程中也需要注意顺序问题

    配置WEB.XML的配置文件过程中发现: 直接红叉,鼠标放在红叉出信息如下: cvc-complex-type.2.4.a: Invalid content was found starting wi ...

  3. Arduino - 看门狗定时器(WDT:Watch Dog Timer)

    看门狗定时器(WDT:Watch Dog Timer)实际上是一个计数器. 一般给看门狗一个大数,程序开始运行后看门狗开始倒计数. 如果程序运行正常,过一段时间CPU应该发出指令让看门狗复位,令其重新 ...

  4. 微信小程序添加背景图片的坑

    给微信小程序页面加载背景图片解决方案 直接附上原文地址: 给微信小程序页面加载背景图片解决方案 - YUSIR 完美CODING世界 - CSDN博客  https://blog.csdn.net/y ...

  5. javaweb利用ajax使登录窗口不跳转页面实现对账号密码的判断

    和上一篇判断用户名是否被占用不跳转页面类似!利用ajax实现跳转,要导入jquery文件库!具体代码我会贴出来,注释在里面!!可以观摩一手!(代码我也留下链接,如果失效,评论补发,代码可能导入也无法使 ...

  6. 第十八篇 admin组件

    admin组件 admin组件使用 admin源码解析 admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以 ...

  7. c++ opencv显示对话框

    IplImage *pl = cvLoadImage("e:\\3.bmp", 1); cvNamedWindow("123", 1); cvShowImage ...

  8. 4K电视到底值不值得购买?

    在智能手机等移动终端的冲击下,近年来电视厂商的日子越来越不好过.为了吸引消费者的关注,电视厂商也是绞尽脑汁不断在电视上增加各种噱头功能.比如当年被吹得神乎其神.在家就享受影院体验的3D电视,就因为3D ...

  9. ansible简单部署前端

    pipeline{ agent any parameters { choice(name: 'server_name', choices: ['xx','xx'], description: 'ser ...

  10. (2) JVM内存管理:垃圾回收

    回顾上期 1)JVM中引用存在哪里? 答:虚拟机栈,该内存空间线程独有 2)该引用的对象存在哪里? 答:堆,所有通过new方法分配的对象都存在堆中 3)String s1="abc" ...