说说你对 C 语言指针的理解?

2015-09-30 16:55:57 +08:00
 Ixizi

类似的问题还可以有:

说说你对协议(delegate)的理解?

说说你对内存管理的理解?

感觉答起来特费劲...

5434 次点击
所在节点    程序员
46 条回复
suikator
2015-09-30 18:20:36 +08:00
chzyer
2015-09-30 18:20:42 +08:00
@LMkillme 如果 64 位是 4 字节,那当逻辑内存地址位于 4G 以外的时候,怎么用 4 字节的内存空间表示?
lu18887
2015-09-30 18:22:14 +08:00
LMkillme
2015-09-30 18:25:31 +08:00
@chzyer 我说的是 int ,不是指针。
hienchu
2015-09-30 18:30:05 +08:00
@ChiangDi 的确是,核心概念应该就两点,本身是变量,保存的是一个地址,指向某一内存区域。接下的深入探讨应该就看你对内存分配,数据类型等基础问题的理解了,说难不难,说简单也不简单。
LMkillme
2015-09-30 18:30:50 +08:00
@lu18887 开眼了,不过 ILP64 这种模式,有编译器在用么?我以前试过很多系统,结果都是 4 个字节。
chzyer
2015-09-30 18:56:40 +08:00
@lu18887 牛逼!
ffffwh
2015-09-30 19:54:30 +08:00
底层:一个内存地址
高层:高阶类型
adadada
2015-09-30 20:10:46 +08:00
@LMkillme mpifort 支持 ILP64 。 Intel MPI Library 用的也是 ILP64 ,其中一个原因是为了支持大数组。
gimp
2015-09-30 21:49:19 +08:00
指针 = 本身是变量,记录着别的变量的地址

协议 ≈ 约定俗成

内存管理 94 字面意思的说...
sparkrat
2015-09-30 21:59:59 +08:00
存储地址的变量.
ryd994
2015-09-30 22:06:14 +08:00
应该友好地回应: RTFM
Read The Friendly Manual
test0x01
2015-09-30 23:16:15 +08:00
认真学过汇编的人表示,指针即地址的一种描述,是含目标类型说明的,是一种类型。既不等同于地址,也不等同于存地址的变量。
rcmerci
2015-09-30 23:19:33 +08:00
我觉得面试的时候让实现个 printf 不错。。
onemoo
2015-09-30 23:29:33 +08:00
告诉他:在我脑中都是汇编
Obelly
2015-10-01 01:00:14 +08:00
说了你也不懂……
chiu
2015-10-01 14:05:05 +08:00
开辟一块空间,存放地址类型的数据
totalfee
2015-10-01 21:58:12 +08:00
遇到这种问题,要把自己当成一个讲师:“ hello 同学们好,这节课给大家讲讲《 c 语言指针》...”,这样就可以说上一节课。
mintist
2015-10-02 09:46:12 +08:00
以下是个人对指针的理解:
首先,它是一个变量;
其次,它存的内存的地址;
再次,它本身附带内存地址的类型,好让你知晓类型的大小。

PS :站在汇编的角度看,经过汇编的过程之后,就是一个内存地址,但是其所指向的类型大小是经过汇编器翻译过的。
mintist
2015-10-02 10:16:40 +08:00
对协议的理解:

首先,协议就是不同单元通信的约定。

比如 A 与 B 很简单的一次通信:
A <------> B
A 和 B 约定一个协议 1 说:我这边传的字符数据,且传过去的每个字符只要- 1 就可以原字符,然后 B 将 A 传过来的字符数据按照字符分别放在缓冲区,然后再传入一个- 1 函数,最后就通过以上的“协议”完成了通信。

当然,真实的协议往往包括,起始,终止,校验,数据,长度等冗余信息来应对较复杂的情况。

然后,不同的协议有不同的使用场景,且越上层设计就越复杂,考虑的因素就越多,如速度,方便和重传机制等等。

比如用于 SoC 内部的 AMBA 总线,主要用于不同单元的互斥访问。
再比如用于一块 PCB 板子内通信 IIC 和 SPI ,主要用于主控单元与外围器件的通信,前者具有线少一主多从的优点,但是速度慢;后者占用线多,但是速度快。(应根据使用场景决定)
再比如用于不同主体之间通信的 USB , Ethernet 和 WiFi ,主要用于数据的传输,速度快;中着就可以组网;后者使用比较方便。

最后,他们多说 TCP/IP 协议是很复杂的, Learn something the Hard Way ,学会这个就会对其它协议的设计理解起来就相对比较容易。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/224833

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX