c语言-指针1

本文详细介绍了C语言中的指针知识,包括内存地址的概念、指针数据类型、取地址和取值运算符的用法,以及如何通过指针修改值。通过学习,读者将能深入了解计算机内存工作原理和C语言指针的运用。
摘要由CSDN通过智能技术生成

指针的所有知识

1.指针

了解计算机的计算的内部流程

知道相关的名词来源

内存地址

​ 我们来看看在计算机内部,CPU(中央处理器)是如何配合其他硬件进行计算的。

例如我么所说的

int a=10;
int b=20;
int c;
c=a+b;

1.首先我们会把我们代码进行打包 编译生成一个可执行的文件

例如 app.exe

2.之后我们双击这个程序 计算机就会进行数据的载入

3.自然的第一步就是 把数据加载到内存当中 给当前的程序开辟一个进程

这一步做的就是把所谓的逻辑地址 变为物理地址

逻辑地址就是所谓你定义 a b …

物理地址就是分配在内存中的位置地址 a可能变为 二进制 再分给内存 20000的位置

4.当程序得到cpu的响应时候(获得cpu的使用权) 就开始执行 把内存的数据加载到寄存器中 进行算数单元执行运算 在把计算的结果输出到内存当中

cpu的构造

cpu 
1.寄存器  存放要计算的数据  从内存中获取
2.控制单元   协调机器的电路 
3.算数逻辑单元 进行运算 

为什么要内存呢?

因为寄存器的存储空间很小 存放不了太多的数据

就会把程序的数据存放到比较大的 内存 当中 例如你的8g内存 16g内存

寄存器从 内存中获得数据进行计算 把计算的结果在存放到内存中

总而言之就是 内存就是仓库 程序需要计算是 所谓的计算数据都在寄存器中

运算在cpu 数据在内存 计算时候的数据在cpu的计算器

计算a+b

1. 从内存中取出一个加数放到一个寄存器中。
2. 从内存取出另一个加数,放到另一个寄存器中。
3. 激活算术、逻辑单元中的加法电路,将前面两步的寄存器作为输入,用另一个寄存器存放结果。
4. 将结果存放到内存中。

数据的位置

计算机通过晶体管的开关状态来记录数据

它们通常8个编为一组,我们称之为字节。

既然 内存需要存储数据,内存上必然有非常多的这种8个开关组成的编组

每一个字节就是一个存储单元

一个 0 1 就是一为 也就是 小b 比特
801 就是一个字节 就是 大B 字节
一个字节就是一个存储单元----

内存上有众多存储单元想一想 8g 是多少字节 多少个位

那么如何区分位置呢

方式一 编号 从0到n 去标号 每一个标号就是内存地址

就像生活中我们所说的:“AA大街,BB公寓,123房间一样”。只不过在内存中没有大街和公寓,仅需要
编号即可表示地址了

方式二 使用开始地址+长度的方式

我们把第一个“房间”的“房间号”,称为这个数据对象的首地址。那么数据对象需要的房间数量,就是它所
占用的存储空间大小。
因此,记录一个数据对象在内存中的存储位置,需要两个信息:
1. 数据对象的首地址。
2. 数据对象占用存储空间大小

而计算机使用的是方式二

例如

int a=2;  //a 4个字节
方式一 内存地址就是 101 102 103 104 需要记住4个
方式二  记住首地址 101 和长度4 即可

2.指针数据类型

取地址运算符 &

写在一个数据对象的左边,可以获取一个数据对象的首地址和所需存 储空间大小

int n;
// &n 就是首地址+数量
类型 pn = &n; // 获取数据对象n的首地址和所需空间大小

指针的声明

int a=12;
i
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值