指针引用int类型的问题

发布于 2021-11-28 00:20:09 字数 94 浏览 809 评论 16

C语言中,一个int型占用四个内存单元,而每个内存单元对应一个内存地址,一个内存地址对应一个指针;那为什么只用一个指针指向一个占用四个内存单元的int,而不是用四个指针?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(16

怎言笑 2021-12-04 00:30:14

一个指针变量,就可以访问整个内存地址空间了

归属感 2021-12-04 00:30:14

因为指针的概念是给程序员用的,但是类型主要是写给编译器看的,编译器会帮你正确处理。

复古式 2021-12-04 00:30:12

另外指针是变量,你可以改变指向内存地址,所以不用4个指针

回眸一笑 2021-12-04 00:30:01

不知道楼主所说的内存单元大小是一个字节,不过一个int型占用的内存大小不一定是4个字节,应该是由编译器决定

简单气质女生网名 2021-12-04 00:30:01

“一个内存地址对应一个指针” 这里好像也理解的不对,不是说每个内存地址都对应一个指针

可是我不能没有你 2021-12-04 00:29:26

很高兴,这个问题有这么多人关注~~

野心澎湃 2021-12-04 00:23:32

第一个问题 iBoxDB 解释得非常好.. 其实就是 Double,Float,Int,Char 型指针在 C 底层是怎么实现的问题,就是想知道“知其然,更要知其所以然”的问题。第二个问题,你发散得非常好,其实归纳起来就是虚拟地址和物理地址的关系,C的逻辑地址就是虚拟地址,通过MMU转换成物理地址,这样一个1G的程序才能在512M的物理内存上运行。

奢望 2021-12-04 00:10:41

楼主, 指针是一种数据, 指向的空间是另一种数据。。哈。 “那为什么只用一个指针指向一个占用四个内存单元的int,而不是用四个指针?”  因为你说了, 指向“一个” 占用四个内存单元的int。。。

另外补充说一句,有两个概念一个是逻辑寻址宽度,例如32位,64位,以前24位的也玩过。 不过区别于后面的一个概念,可以说是“逻辑”的地址总线宽度。还有一个是数据总线的宽度。 例如32位上,你的一个结构体数据,总是4字节宽度对齐的。这个和地址宽度无关。编译器这么做,是方便降低操作复杂度。。哈。

叹沉浮 2021-12-04 00:00:52

指针的大小(或长度)是由地址总线决定的,只决定寻址范围,与内存单元大小无关。

叹沉浮 2021-12-03 23:10:48

在32位系统中,一个指针占用4个字节,即32位。这个指针的值在内存中占用四个字节(就是你说的内存单元),这四个字节一起才表示指针

南汐寒笙箫 2021-12-03 14:52:27

指针是有类型的,比如int型指针,double型指针,不同类型的指针分别指向不同类型的数据,打个比方,你有两套房子,一套是80平的,一套是120平的,分别各有一把钥匙,那么虽然它们在本质上都是钥匙,但是它们的实质是不一样的。

断爱 2021-12-03 14:19:04

是对应关系,不是只能表示 ~ 请看清描述问题后,再做回答,谢谢。

情场扛把子 2021-12-03 13:40:53

回复
什么对应啊,真逗,指针只是编译器翻译过程的一个符号表示,还对应,逗呢。翻译成汇编了,还哪来的指针?都是寄存器了。汇编再翻译成机器码,全是 0 1 了。

清晨说ぺ晚安 2021-12-02 15:08:11

拜托,指针是符号。地址是内存空间位置。指针为什么只能表示一个单元位置呢。

剑心龙吟 2021-12-02 13:37:15

thx,解答了我的疑惑

惜醉颜 2021-11-28 06:47:53

你可以使用4个指针做相同的事情,首先你要懂如何把一个4-byte的int打散为4个byte。#iBoxDB#.NET的底层序列化就是这样做的,因为不能直接在托管代码上使用指针,为了不调用机器码权限。

ptr[0] = a >>.. ptr[1] = a >>.. ptr[2] = a >>.. ptr[3] = a >>..

a = ptr[0] .. ptr[1].. ptr[2] ..ptr[3]

注:ptr[1] = ptr + 1; int a;

看完上面这么复杂的代码,你要感谢C指针帮你做的事情。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文