类似的问题还可以有:
说说你对协议(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 11
指针,就是别的世界线上的记忆,
每一条时间线上,栈上的数据随着 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 1
|
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#里那个闭包么。。
|