深入理解并打败C语言难关之一————指针(1)

2025-05-04阅读 0热度 0
数组 c语言 ai len函数 为什么

前言:

已经好久没有写文章,最近的生活比较忙,我到现在为止已经学完了C语言的大部分内容了,所以我决定每天出一篇文章来复习我学过的知识,今天先来讲指针的相关知识,行了我也不多废话了,现在开始进入正文

深入理解并打败C语言难关之一————指针(1)

正文:

1.内存与地址

1.1内存

立即学习“C语言免费学习笔记(深入)”;

 我们可以引入一个案例来解释一下内存是什么:假如你有一个朋友叫做小明,有一天你住进了一个酒店,你想要邀请小明来酒店来找你玩耍,如果你不告诉小明你的房牌号的话,他只能从一楼开始一个房间一个房间的来找你,这样会显的很麻烦,如果你直接告诉他你的门牌号的话,他会直接找到你人在哪里。我们把这个故事的内容类比到计算机当中去,这个酒店我们称之为一个内存,酒店里有很多的房间,我们把一个房间称之为一个内存单元,每一个内粗单元都有一个相对应的编号,我们把内存单元的编号称之为地址,地址也叫做指针,所以,内存单元的编号 == 地址 == 指针,所以这就是指针的实际意义,他就是一个地址。

1.2.如何理解编址(这部分内容其实我也不太明白,所以我从网上找点资料来进行完善了)

深入理解并打败C语言难关之一————指针(1)

  将这个之前我先从这放一张图来更好的理解编址,CPU访问内存的某个字节空间的时候,必须要知道这个字节空间在内存的什么位置,并且因为内存中字节很多,所以需要给内存进行址(就比如酒店的房间很多,需要给房间编号一样),计算机中的编址,并不是把每一个字节的地址记录下来,而是通过硬件设计完成的。钢琴,吉他上面没有写到“剁、来、咪、发、唆、拉、西”这样的信息,但演奏者照常能够精确知道。本质上是一种约定出来的共识

⾸先,必须理解,计算机内是有很多的硬件单 元,而硬件单元是要互相协同⼯作的。所谓的协 同,至少相互之间要能够进行数据传递。但是硬件与硬件之间是互相独⽴的,那么如何通信呢?答案很简单,用"线"连起来。不过,我们这节课关心的线是地址总线:硬件编址也是如此 我们可以简单理解,32位机器有32根地址总线, 每根线只有两态,表示0,1【电脉冲有⽆】,那么 ⼀根线,就能表示2种含义,2根线就能表⽰4种含 义,依次类推。32根地址线,就能表⽰2^32种含义,每⼀种含义都代表⼀个地址。 地址信息被下达给内存,在内存上,就可以找到 该地址对应的数据,将数据在通过数据总线传传入 CPU内寄存器。

2.指针变量和地址以及指针变量类型的意义

2.1取地址操作符(&)

  对于如何知道内存,取地址操作符可以找到变量什么的所在的地址,下面直接进行演示,对于取到地址的演示  (对了地址的占位符是%p)

代码语言:javascript代码运行次数:0运行复制
#include<stdio.h>int main(){   int a = 12;   printf("%p",&amp;a);   //注意地址的占位符是%p   return 0}</stdio.h>
登录后复制
免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策