
类似的问题还可以有:
说说你对协议(delegate)的理解?
说说你对内存管理的理解?
感觉答起来特费劲...
1 vietor 2015-09-30 17:03:00 +08:00 via Android 对人生的理解 |
2 neoblackcap 2015-09-30 17:08:03 +08:00 就一内存地址 |
3 aprikyblue 2015-09-30 17:17:20 +08:00 简单理解的话当内存地址就好了。。。 |
4 LMkillme 2015-09-30 17:21:42 +08:00 这种问题还是很能体现出水平的,看回答,知深浅,比「 int 占几个字节」这种有固定答案的问题好多了。要问出应聘者的水平,这种问题最好了。 |
5 holulu 2015-09-30 17:29:05 +08:00 说说你对宏的理解 |
6 SeanChense 2015-09-30 17:29:51 +08:00 @LMkillme 那, int 占几个字节? |
7 holulu 2015-09-30 17:29:53 +08:00 自己去翻 Pointers on C |
8 Mirana 2015-09-30 17:30:14 +08:00 内存地址 数据类型 |
9 LMkillme 2015-09-30 17:30:23 +08:00 @SeanChense 自己谷歌去 |
10 guotie 2015-09-30 17:32:34 +08:00 指针即地址 |
11 Ixizi OP |
12 ChiangDi 2015-09-30 17:45:28 +08:00 指针不是地址吧,是保存地址的变量。 |
13 xiongxin8802 2015-09-30 17:45:31 +08:00 `int *p = &a` (假设 int a = 10) 嗯,指针 p 指向一个地址,在这个地址保存一个变量可以用*p 来表示,这个变量就是一堆 0101010 子类的,我们通过*p 来改变这串二进制的值就会影响到 a 的值。。。好复杂,说不清楚了 |
14 187j3x1 2015-09-30 17:49:34 +08:00 就记得是一种特殊变量 保存地址 |
15 iShao 2015-09-30 17:53:07 +08:00 via Android 谈谈你对异性恋的理解 |
16 zhujinliang 2015-09-30 17:55:41 +08:00 指针,就是别的世界线上的记忆, 每一条时间线上,栈上的数据随着 CPU 时钟不停地向前迭代,这是时间本来的样子 通过指针,可以修改过去时空的记忆,从而影响当前的世界线,这是穿越时空的第 12 种方式 是的,高效的算法,就是反复的时空跳跃,数十亿的 CPU 时钟跳动,不过是眨眼工夫的事 当世界线收束至那必然的结果时,你是否想过那孤独的观测者 |
17 Virtao 2015-09-30 17:56:19 +08:00 旧文一篇: 《 C 中指针的复杂用法及阅读技巧》 http://blog.virtao.org/articles/28.html 帮助你理解类似下面这样的指针: void (*(*(*virtao)[1])(int, void(*)(int)))(int) |
18 jiangzhuo 2015-09-30 18:02:01 +08:00 如果不知道面试官想听什么,我也不知道从哪开始说起。我就从头讲!!! “以前我们用 B 语言编程。。。。。。。” 之后省略几千字 我觉得这时候一般你说个五分钟才刚提到 C ,还有事忙的面试官就打断你了,然后给你个具体点的问题。 |
21 suikator 2015-09-30 18:20:36 +08:00 via Android @zhujinliang 666 |
22 chzyer 2015-09-30 18:20:42 +08:00 via iPhone @LMkillme 如果 64 位是 4 字节,那当逻辑内存地址于 4G 以外的时候,怎么用 4 字节的内存空间表示? |
23 lu18887 2015-09-30 18:22:14 +08:00 |
25 hienchu 2015-09-30 18:30:05 +08:00 @ChiangDi 的确是,核心概念应该就两点,本身是变量,保存的是一个地址,指向某一内存区域。接下的深入探讨应该就看你对内存分配,数据类型等基础问题的理解了,说难不难,说简单也不简单。 |
28 ffffwh 2015-09-30 19:54:30 +08:00 底层:一个内存地址 高层:高阶类型 |
29 adadada 2015-09-30 20:10:46 +08:00 @LMkillme mpifort 支持 ILP64 。 Intel MPI Library 用的也是 ILP64 ,其中一个原因是为了支持大数组。 |
30 gimp 2015-09-30 21:49:19 +08:00 指针 = 本身是变量,记录着别的变量的地址 协议 ≈ 约定俗成 内存管理 94 字面意思的说... |
31 sparkrat 2015-09-30 21:59:59 +08:00 存储地址的变量. |
32 ryd994 2015-09-30 22:06:14 +08:00 应该友好地回应: RTFM Read The Friendly Manual |
33 test0x01 2015-09-30 23:16:15 +08:00 via Android 认真学过汇编的人表示,指针即地址的一种描述,是含目标类型说明的,是一种类型。既不等同于地址,也不等同于存地址的变量。 |
34 rcmerci 2015-09-30 23:19:33 +08:00 我觉得面试的时候让实现个 printf 不错。。 |
35 onemoo 2015-09-30 23:29:33 +08:00 告诉他:在我脑中都是汇编 |
36 Obelly 2015-10-01 01:00:14 +08:00 说了你也不懂…… |
37 chiu 2015-10-01 14:05:05 +08:00 开辟一块空间,存放地址类型的数据 |
38 totalfee 2015-10-01 21:58:12 +08:00 遇到这种问题,要把自己当成一个讲师:“ hello 同学们好,这节课给大家讲讲《 c 语言指针》...”,这样就可以说上一节课。 |
39 mintist 2015-10-02 09:46:12 +08:00 以下是个人对指针的理解: 首先,它是一个变量; 其次,它存的内存的地址; 再次,它本身附带内存地址的类型,好让你知晓类型的大小。 PS :站在汇编的角度看,经过汇编的过程之后,就是一个内存地址,但是其所指向的类型大小是经过汇编器翻译过的。 |
40 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 ,学会这个就会对其它协议的设计理解起来就相对比较容易。 |
41 mintist 2015-10-02 10:29:07 +08:00 对内存管理的理解,还是根据使用场景来对内存进行划分。 - 比如临时变量就放在栈里面,这段内存的属性:一般一些占用空间较小的变量和数据,用完就放 - 系统调用的 malloc 就放在堆里面,这段内存的属性:一般大段空间内存的使用,自己拥有申请和释放的权利 - 自己写一个内存管理器(我觉得楼主是指这个),这段内存的属性:你有如何设计如何申请和释放,当然也可以确定何时申请和释放 PS :至于虚拟内存管理和物理内存的映射,主要是为了让多进程看起来都只有一个相同的内存空间,多一层抽象,这个使用不多,不是太了解。 |
42 easing 2015-10-02 15:24:52 +08:00 via Android 就是有类型的地址 |
44 thxmem 2015-10-02 23:47:27 +08:00 (*(void(*) ())0)() 重学 C 语言中,看到这里,今晚不想看了。 |
46 wizardforcel 2015-10-03 16:51:24 +08:00 delegate 是啥。。是 c#里那个闭包么。。 |