这么快,奇怪的问题: 我参加了考试,一道题是:
char c = 'A'
char *p =&c
char **p2 = &p
void *v = &p2
写出以下表达式的类型(即 int、void* 等):
&v
p2 + 1
v[0]
我回答:
void **
字符**
- 非法
并失去了全部学分。我只是想在尝试取回积分之前征求别人的意见。
我不太确定,但我想,因为
v
是一个指向内存地址的void
指针,所以的地址v
本来就是一个void**
。但是,如果v
被取消引用,它将是一个char****
。p2
是一个char**
,因此向它加 1 仍然会使它成为一个char**
。v[0]
不存在。
如果有人能帮我解决这种愚蠢的问题,我将不胜感激。 谢谢。
最佳答案
你的答案是正确的,因为你给出的原因(除了关于取消引用 v
的部分,尽管听起来你已经知道你不能取消引用 void *
).
关于c - C中的基本类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8555954/