前言

一、指针

1.内存

      2.指针变量及其大小

二、总结


前言

今天学的是指针,C语言很重要的一个部分,打算自己写出来当作复习!对于C语言来说,指针是一个很重要的部分,接下来让我们一起来了解一下指针。

一、指针

1.内存

首先,指针与电脑上的存储器→内存有关联,计算机的程序都是在内存里面进行的。

此处先展开讲一下内存,在使用内存的时候,会把内存分为一个个小单元,这里的每一个单元的大小是 1个字节 。如下图所示:

图 1 内存

如果想访问内存里面的某一个单元,就需要给每一个单元进行编号,便于查找,像生活中给每假每户编门牌号一个道理,这些编号就被称作为 内存单元的地址。

此处打开VS2019写段代码举个例子,如图中所指的变量a,是一个整型,整型一共占4个字节,也就是说,假设变量a要开设空间,这个时候要占下图3中内存的4个字节的空间,可以理解成占了4个小格。

图 2

图 3

2.指针变量及其大小

那这个时候如何取出变量图3  a 的地址,就涉及到一个取地址的操作符号&。

&a;//取出的是所占4个字节空间的第一个字节的地址(地址小的那一个字节)

此时在VS2019代码演示一下。

图 4

这里可以看到程序运行后打印出来的地址是00CFFE98,我们要怎么才能知道这个地址是a的第一个编号/地址,这里就可以用到F10调试按键来观察。如下图所示:

图 5

等左侧黄色小箭头知道打印程序的那一行开始监视,此时左侧如图输入&a,得出一个地址0x0133F878

图 6

那么得出的这个地址是一个编号,需要存放起来就要再开设一个变量,我们假设这个变量叫p,如图所示编程,此时p是用来存放地址的,所以我们把p称为指针变量。此处的p类型应该写成 int * 。

图 7

因为p里面存放的是&a,所以理论上来讲他们两个是一样的,所以我们可以看到打印出来之后两个值是一模一样的。此处我们可以看到int 后有一个*,这里解读一下,*表示p是一个指针变量,int表示p指向的对象类型是int,是一个整型,举一反三,假设用的是double类型,要取出d的地址,我们就会用到double* pd = &d。

C语言中用到指针变量来存放地址是为了可以通过变量来找到地址所在位置

图 8

如图注释中写的,通过*p找到a,再修改其中的数值,也是可以的。可以理解为*p就是a。


那么指针变量的大小是多少呢?接下来就会探讨到。

图 9

此处打印出来的值都是4,为什么呢,接下来我们倒推一下,当我们想知道指针变量有多大 → 地址的存放需要多大空间 → 地址是如何产生的数据

我们知道早期的计算机有32位,64位,此处拿32位机器举例子,32位机器代表的是有32根地址线/数据线,这个是物理的电线,能通电,会输出高电平和低电平,高电平,高电平电信号转换成数字信号就是1,反之位0。

因此当32跟电线同时通电的时候会出现高电平和低电平,列举出以下几种部分可能发生的情况(不完全)

图 10

此处可以产生2的32次方种情况,也就是对应的2的32次方个用2进制序列组成的内存编号,这样的一个32位由0和1组成的序列需要存起来的话需要给到32个bit位,也就是4个byte。所以,倒推回来的这样一个二进制序列存储起来只需要4个字节,那一个指针用来存放一个4个字节的地址,那么指针变量的大小对应也是4个字节。

二、总结

一个内存单元的大小是一个字节,管理一个内存单元需要一个编号(地址),这个编号的大小(所需要的空间)是4个字节。

ps:写的不好,刚接触编程,但是我很喜欢编程!不喜勿喷~文章很多错误的地方,欢迎大佬们来指点!!我会虚心学习的!

小白学习 指针,指针变量,指针变量大小相关推荐

  1. c语言指针变量字节,C语言指针变量类型和大小

    指针变量作为C语言中的特殊数据类型,除了用于存储内存地址之外,它与其他类型比较是否具有其他特点呢?接下来对指针类型进行分析,剖析指针类型的特点. 指针的大小与其指向的内存中存储的变量类型无关,它只与计 ...

  2. 【小白学习C++ 教程】十、C++中指针和内存分配

    @Author:Runsen 指针 指针是保存内存位置地址的变量.我们知道声明的所有变量在内存中都有一个特定的地址.声明一个指针变量来指向内存中的这些地址. 声明指针变量的一般语法是: int p, ...

  3. 【小白学习C++ 教程】七、在C++指针声明和指针相关概念

    @Author:Runsen C++ 指针学习起来有点难,但是很重要.一些 C++ 程序使用指针更容易执行,另外其他 C++ 程序,例如动态内存分配,没有指针就无法执行. 每个变量都是一个内存位置,每 ...

  4. C++成员变量指针和成员函数指针

    深度探索C++对象模型这本书还有提到C++类的成员变量指针和成员函数指针,虽然在实际开发中用的不多,但是还是需要理解下. 一:成员变量指针 1.1 非静态成员指针 类成员变量指针,实际上并不是真正意义 ...

  5. 【初阶指针之】指针和指针变量

    首先我们要知道指针是什么? 指针理解的两个要点: 1.指针是内存中一个最小单元的编号,也就是地址 2.平时我们所说的指针,通常指的是指针变量,是用来存放地址的变量 总结:指针就是地址,口说的指针通常指 ...

  6. 指针作用、指针与指针变量、指针的定义与初始化、指针赋值

    目录 一.指针的作用 二.指针与指针变量 1.变量的地址 2.指针与指针变量的概念 三.指针的定义与初始化 1.指针的定义 2.直接访问与间接访问 3.指针的初始化 四.取地址与指针运算符及指针赋值运 ...

  7. C指针6:指针变量作为函数参数

    在C语言中,函数的参数不仅可以是整数.小数.字符等具体的数据,还可以是指向它们的指针.用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着 ...

  8. C指针3:指针变量的运算

    由上节介绍我们知道,通过指针可以修改内存上的数据,并进一步可以交换数据.这种操作实际上也是在对地址进行操作运算.具体怎么实现指针变量的元素呢?为什么能实现指针变量的运算呢? 因为指针变量保存的是地址, ...

  9. 从变量地址到指针再到指针变量

    标题中的3个概念:变量地址.指针and指针变量是依次出现的,逐个确定就可以明晰到底什么是我们常说的指针(其实是指针变量) 首先,变量在本质上是一段存储空间,既然是存储空间,就必有地址,一般每个字节有一 ...

  10. C++成员变量指针和成员函数指针【The semantics of funcitons】

    原文:https://blog.csdn.net/laojiu_/article/details/68946915 (原文有笔误) 1. #include <cstdio> #includ ...

最新文章

  1. PHP __autoload函数(自动载入类文件)的使用方法
  2. sqlAlchemy中的对象转换为dict
  3. 学python要多少钱-学习Python这门课程大概需要多久?费用是多少?
  4. CDH 的Cloudera Manager免费与收费版的对比表
  5. Docker的基本认识及使用
  6. 重磅 | 2019年“中国计算机学会CCF优秀博士学位论文奖”评选结果公告
  7. 如何在jsp页面中连接mysql数据库_如何使用JSP访问MySQL数据库
  8. manual setting mysql_mysql 5.5配置
  9. koa2-cors应答跨域请求实现
  10. Elasticsearch结构化搜索_filter执行原理深度剖析(bitset机制与caching机制)
  11. javascript获取css行内样式
  12. WordPress主题 LightSNS v1.6.60 强大的社交系统SNS主题(免受权)
  13. 浅谈测试小白到测试大牛的成长历程(分四个境界)
  14. 沧州中考计算机考试时间,2019年沧州中考考试时间安排,沧州中考考试科目时间安排表...
  15. 移动app原型设计工具:Flinto for Mac
  16. 解决新版 Edge 浏览器无法使用 IDM 的问题
  17. 大家谈之《区块链大革命》
  18. 判断时间是否在本月之内
  19. U盘突然提示格式化怎么办?里面的数据怎么办?
  20. 一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历...

热门文章

  1. docker swarm 官方文档
  2. python基础——求两个数的最大公因数和最小公倍数
  3. Linux(CentOS 7)服务器增加固态硬盘作为系统盘
  4. 第五人格PC端下载以及解决打不开问题
  5. CIO们欲加大对网络的投资 WLAN等成重点
  6. 小团团云上城在哪个服务器,云上城之歌小团团
  7. 一张图理解对分、增长函数、打散、突破点、VC维
  8. 公司财务分析——收益性分析
  9. Arduino 控制 DS1302 时钟芯片
  10. JGROUPS JGRP000029问题