指针可以这样认知

news2024/11/18 1:38:56

注:此篇文章仅限初步了解,本小白后续会持续进行详解指针的相关操作。

目录:

    • 认知内存
      • 一个内存单元的大小
      • 地址的产生
    • 理解
    • 指针
      • 用途
    • 指针变量的大小
    • 💞结尾

了解指针为什么需要了解内存呢?
因为指针是用来管理内存,访问内存的。

认知内存

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 (程序是加载到内存中的,并且在运行时会向内存申请空间来存储相应的数据)。

📚我们可以将内存与房间作类比,一栋楼中每个房间都有门牌号,我们可以通过门牌号找到对应的房间。

电脑的内存是如何管理的呢❓
内存也一样,它有很多个“房间”,通过编号,可以快速的找到对应的“房间”,这个“房间” 就是内存单元。


一个内存单元的大小

计算机中的一些单位:

假如一个内存单元是一个bit,那么一个char类型的数据就需要8个内存单元来管理,过于夸张。所以,每个内存单元的大小是1个字节(Byte)。


地址的产生

如果要访问一块内存单元,就需要找到它的编号.
📘在计算机上是有地址线(物理电线)的,当地址线通电就会产生高低电平信号,之后转换为数字信号 1 或者 0 .
例如:
 在32位计算机上,会有32根地址线,每根地址线会产生 1 或者 0 ,这样32根地址线产生的信号就是 1 和 0 组成的二进制序列。例如:00000000 00000000 10100000 11101000 。同时通电后,其实就会产生2^32 种可能出现的序列编号。每一个序列管理一块内存单元

这样 , 2*32 个序列 就可以管理 2^32 个内存空间 , 也就是 4个GB 的内存空间。


理解

对于一个这样的代码,怎么看待内存呢 ?

int num = 10;

一个int类型是4个Byte,即需要申请4个内存单元。

VS2022内存窗口:

我们可以明确看到这 4个内存空间存储的值,由于是按照16进制显示,所以为 0x0000000a 。

VS 2022 监视窗口:

由于内存空间是连续的,所以&num 会拿到所占用内存空间的第一个内存单元的地址。
我们可以用 %p 将地址以16进制形式打印出来。


指针

📙地址也是数值,地址是用来访问内存空间的,我们需要将地址存储起来以方便我们使用。在c语言中,地址其实就是指针,储存指针的变量,叫做指针变量。
例如:

int main()
{
	int num = 10;
	int *p = #
	return 0;
}

针对该处指针变量p的类型可以有以下解释:
int *    * —— 表示变量p是指针变量。
     int——表示变量p指向的是int类型的变量。


用途

可以利用解引用操作符改变对应的值。

#include<stdio.h>
int main()
{
	int num = 10;
	int *p = &num;
	*p = 20;
	printf("%d\n", num);
	return 0;
}

❗️结果:

这里 *p 就是通过p里面的地址直接访问到num的内存,并进行修改。


注意:口头语中的指针,基本都是指针变量。


指针变量的大小

指针变量的大小取决于地址的大小

指针变量是用来存放地址的。
📙在32位的机器上:
地址是32个二进制位,这个地址需要4个字节来存储,,所以指针变量的大小是4个字节。
📙在64位的机器上:
地址是64个二进制位,这个地址需要8个字节来存储,,所以指针变量的大小是8个字节。


💞结尾

之后的内容,本小白会持续更新,刚开始写博客,有不足的地方还请各位大佬多多指正,非常感谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/463413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【k8s】ruoyi微服务迁移到k8s

书接上回【传统方式部署Ruoyi微服务】&#xff0c;此刻要迁移至k8s。 环境说明 31 master &#xff0c; 32 node1 &#xff0c; 33 node2迁移思路 交付思路: 其实和交付到Linux主机上是一样的&#xff0c;无外乎将这些微服务都做成了Docker镜像; 1、微服务数据层: MySQL、 R…

聊聊 IP packet 的 TTL 与 tcp segment 的 MSL

聊聊 IP packet 的 TTL 与 tcp segment 的 MSL 1 前言 - 网络知识的重要性 近几年在排查解决应用系统在客户现场遇到的复杂问题时&#xff0c;越来越觉得除了扎实的LINUX操作系统知识&#xff0c;对TCP/IP网络知识的深入理解也是至关重要的。 有鉴于此&#xff0c;后续笔者会…

排序算法---插入排序

插入排序是一种简单的排序算法&#xff0c;一般又称为直接插入排序。插入排序的思想与选择排序有些相似&#xff0c;即在原数组上将数组分为两个部分&#xff1a;已排列好的有序数组和待排列数组&#xff0c;选择排序强调的是“选择”&#xff0c;而插入排序强调的是”插入“&a…

【Excel统计分析插件】上海道宁为您提供统计分析、数据可视化和建模软件——Analyse-it

Analyse-it是Microsoft Excel中的 统计分析插件 它为Microsoft Excel带来了 易于使用的统计软件 Analyse-it在软件中 引入了一些新的创新统计分析 Analyse-it与 许多Excel加载项开发人员不同 使用完善的软件开发和QA实践 包括单元/集成/系统测试 敏捷开发、代码审查 …

【JavaScript面向对象】

JavaScript面向对象 1 本节目标2 面向对象编程介绍2.1 两大编程思想2.2 面向过程编程POP2.3 面向对象编程OOP2.4 面向过程和面向对象的对比 3 ES6中的类和对象3.1 对象3.2 类class3.3 创建类3.4 类constructor构造函数3.5 类添加方法3.6 三个注意点 4 类的继承4.1 继承4.2 supe…

matlab 点云采样相关操作-源码复制粘贴即可

1.随机采样一个百分点的随机抽样 clc; clear; close all; % clear everything% Import point cloud pc pointCloud(Lion.xyz);% Plot all points pc.plot; % points are colored by z coordinate title(All Points, Color, w); view(0,0); snapnow;% Select randomly 5 perce…

FL Studio21免费吗?怎么下载最新中文版本?

FL Studio中文版已上线&#xff0c;自20.8版起已支持简体中文。推荐使用Windows 10系统安装&#xff0c; Windows 7系统设置FL Studio语言为中文时若出现乱码&#xff0c;可以将Win10系统中的“微软雅黑”字体复制并安装进Win7系统电脑中&#xff01;FL Studio支持什么格式的插…

【软考数据库】第四章 操作系统知识

目录 4.1 进程管理 4.1.1 操作系统概述 4.1.2 进程组成和状态 4.1.3 前趋图 4.1.4 进程同步与互斥 4.1.5 进程调度 4.1.6 死锁 4.1.7 线程 4.2 存储管理 4.2.1 分区存储管理 4.2.3 分页存储管理 4.2.…

进程与线程:同步和互斥

进程与线程&#xff1a;同步&互斥 同步&互斥的概念 ​ 进程具有异步性的特征。异步性是指各并发进程执行的进程的以各自独立的&#xff0c;不可预知的速度向前推进 同步 ​ 同步 亦称为直接制约关系&#xff0c;它是指为完成某种任务而建立的两个或多个进程&#xf…

虚拟主机解压/压缩功能说明

使用帮助说明 主机控制面板上点击文件管理&#xff0c;进入目录。 一、解压 windows操作系统: 鼠标移动到压缩文件&#xff0c;点击“解压” Linux操作系统&#xff1a; 压缩文件后点击解压按钮。 注意linux系统不支持rar在线解压&#xff0c;rar改名为zip也不能解压&…

JVM 调优

大部分的情况都是由于企业内部代码逻辑不合理导致。 JVM内部性能优化 栈上分配 方法内联 JVM的自适应调整 JVM改错 大并发内存不足OOM 内存泄漏GC频繁CPU飙升 JVM的调优的原则是让你各项指标尽可能的利用到你硬件的性能瓶颈。 JVM的性能优化可以分为代码层面和非代码层面。…

数据库系统工程师——第五章 网络基础知识

文章目录 &#x1f4c2; 第五章、网络基础知识 &#x1f4c1; 5.1 计算机网络概述 &#x1f4d6; 5.1.1 计算机网络的概念 &#x1f4d6; 5.1.2 计算机网络的分类 &#x1f4d6; 5.1.3 网络的拓扑结构 &#x1f4c1; 5.2 网络硬件基础 &#x1f4d6; 5.2.1 网络设备 &…

Linux 文件内容相关命令使用汇总

Linux操作系统有很多强大的文件内容相关命令&#xff0c;这些命令可以让您查看、分析和编辑文件。其中&#xff0c;最基本和常用的命令包括cat、more、less和head/tail等。除了这些基本命令之外&#xff0c;grep和find命令也是文件搜索和过滤方面的有力工具。 前言 我们这篇主…

UM2080F32 低功耗32 位 Sub1GHz 无线SOC收发器芯片

产品描述 UM2080F32 是广芯微电子&#xff08;广州&#xff09;股份有限公司研制的基于 ARM Cortex M0 内核的超低功 耗、高性能的、单片集成 (G)FSK/OOK 无线收发机的 32 位 S o C 芯片。 UM2080F32 工作于 200MHz~960MHz 范围内&#xff0c;支持灵活可设的数据包格式&#xf…

危险试探,产品经理赋予AI人格来打造品牌忠诚度

图片来源&#xff1a;由无界 AI工具生成 你可能不会相信&#xff0c;你的手机很可能变成你的虚拟情人&#xff0c;升级情人需要升级手机&#xff0c;而你从此再也不想换其他品牌手机。 AI时代&#xff0c;赋予产品以人格&#xff0c;让用户爱上产品&#xff0c;这或许是接下来产…

Python整个颜色小网站,给刚刚失恋的他.........

一些过场剧情: 死党一直暗恋校花&#xff0c;但是校花对他印象也不差&#xff0c; 就是死党一直太怂了&#xff0c;不敢去找校花&#xff0c; 直到昨天看到校花登上了校董儿子的豪车&#xff0c; 死党终于彻底死心&#xff0c;大醉一场&#xff0c;作为他的兄弟&#xff0c…

井电双控智能取水计量设备-井电双控遥测终端机

井电双控遥测终端机/井电双控智能取水计量设备&#xff08;MGTR-W4122C&#xff09;是针对取水计量控制系统开发智能终端产品。集预收费、流量监测、电量监测、余额提醒、欠费停机、无线传输、远程控制等多种功能于一体&#xff0c;并可根据项目需求选择实体IC卡和APP电子卡取水…

【JavaEE】从收发消息的角度理解 TCP/IP 五层网络模型的封装与分用

文章目录 1 为什么需要分层&#xff1f;2 TCP/IP 五层网络模型3 数据的封装&#xff08;发送消息为例&#xff09;4 数据的分用&#xff08;接收消息为例&#xff09;5 实际网络环境上的封装与分用写在最后 1 为什么需要分层&#xff1f; 你问我为啥需要分层&#xff1f;那必然…

python+vue 健康体检预约管理系统

该专门体检预约管理系统包括会员和管理员。其主要功能包括个人中心、会员管理、体检服务管理、类型管理、订单信息管理、取消订单管理、 体检报告管理、通知信息管理、交流论坛、系统管理等功能。 目 录 一、绪论 1 1.1研发背景和意义 2 1.2 国内研究动态 3 1.3论文主…

US-DAT2-F、US-DAT2-A比例放大器接线

多路控制阀比例放大器接线端子定义&#xff1a; 序号 端口 名称 1 CMD1 1阀指令 2 CMD1- 1阀指令- 5 RS485_A - 6 RS485_B - 7 VREF_10V 参考电压10V 8 VREF_0V 参考电压0V 9 VAL1_A 1阀电磁铁A 10 VAL1_AB- 1阀电磁铁AB- 11 VAL1_B 1阀电磁铁B 12 PWR 电源 13 PWR…