带你深度学习指针(1)

前言:这篇文章将全方面带你了解指针的作用。

1.内存和地址

1.1内存

 计算机cpu在处理数据时,在内存读取数据,处理后的数据再放回内存。
把内存划分为一个个内存单元,每个内存单元大小为一个字节。
补充:一个字节有8个比特位,比特位是存储二进制的0或1。

每一个内存单元都有一个编号,有了这个编号cpu可以快速找到一个内存空间。
c语言中将编号称作指针,因此我们可以理解为: 内存单元编号==地址==指针

1.2如何理解编址

首先必须理解,计算机内有很多硬件单元,硬件单元之间是相互合作的,至少相互之间要能够相互之间进行数据传递。

但是硬件间相互独立,是如何实现联系的呢?
答案很简单,用“线”连接起来。

而cpu和内存之间有大量数据交互,所以,两者也需要用线连接。

cpu在内存中访问空间,必须知道空间的位置,因此对字节空间进行编址。

计算机编址并不是把每个字节地址记录下来,而是通过硬件设计完成。

我们可以简单理解,32位的机器中,cpu和内存间存在32根地址总线,每根线有0和1两种状态,因此32根就可以表示2^32种地址。

例如:地址信息通过地址总线,可以在内存中找到地址对应的数据,再通过地址总线将数据传入cpu内寄存器。

2.指针变量和地址

2.1取地址操作符(&)

理解地址和内存关系,我们再回到c语言中,c语言中创建变量就是在向内存申请空间,比如:

其中&为取地址操作符,我们发现变量a有四个字节,其中内存中44的地址和变量a的地址相同,那是因为变量的地址取自最小的字节编号。

因此我们只要知道第一个字节地址,就能访问4个字节的数据。

2.2解引用操作符(*)
#include<stdio.h>
int main()
{

int a=10;
int*pa=a;

return 0;
}

在这个代码中pa的类型是int*,其中*说明pa是指针变量,而int说明pa指向的对象是整形(int)。 

#include<stdio.h>
int main()
{

int a=10;
int*pa=a;

*pa=20;

printf("a=%d",a);
return 0;
}

在这个代码中*pa,pa指向的是a的地址,而*pa表示解引用a的地址,*pa等价于a。

a=20
2.3指针变量的大小

指针变量是专门存放地址的。而指针变量的大小取决于机器,在32位的平台上,指针大小为32比特位,也就是4字节,同理64位平台上指针大小是8字节。

注意指针变量大小与类型无关,只与平台有关。

3.指针变量类型的意义

指针变量大小和类型无关,那么我们为什么还要有各种各样的指针类型呢?

3.1指针的解引用

根据代码我们发现pa类型为int*,对*pa赋值为0,int a的每个字节都变成00; 

当pa类型为char*时,对*pa进行赋值,只改变了int a的第一个字节内容。

结论 :指针类型决定了,对指针解引用时有多大的访问权限。

比如:char*类型解引用时每次只能访问一个字节,而int*可以访问4个字节。

3.2指针+-整数
#include<
内容概要:本书《Pattern Recognition and Machine Learning》系统阐述了模式识别与机器学习领域的基本理论与方法,强调概率模型与贝叶斯推理的核心地位。书中涵盖的主要内容包括概率分布、线性回归与分类、神经网络、核方法、支持向量机、图模型、EM算法、变分推断、蒙特卡洛采样方法(如Metropolis-Hastings和混合蒙特卡洛)以及连续隐变量模型(如PCA与独立成分分析)等。全书注重概念与原理的深入解释,并融合大量实例与图形辅助理解,同时提供配套软件资源用于实践。; 适合人群:具备一定数学基础(如线性代数、概率统计)和编程能力,面向高年级本科生、研究生及从事机器学习研究与应用的科研人员;尤其适合希望从理论层面深入理解主流机器学习算法的学习者。; 使用场景及目标:①掌握机器学习中经典算法的概率建模思想与数学推导过程;②理解图模型中的条件独立性判断、因子分解、消息传递机制;③学习复杂分布下的近似推断技术(如变分法与MCMC)及其应用场景;④为后续研究深度学习、强化学习或相关领域打下坚实的理论基础。; 阅读建议:此书理论性强,建议结合练习题进行深入学习,优先完成“www”标记的在线习题以检验理解程度。对于重点章节(如第2章概率分布、第8章图模型、第11章蒙特卡洛方法),应仔细推导公式并尝试复现算法,配合Matlab工具包实践可显著提升学习效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aaa最北边

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值