【发布时间】:2011-12-19 00:20:17
【问题描述】:
这么快,奇怪的问题: 我参加了考试,题目是:
char c = 'A'
char *p =&c
char **p2 = &p
void *v = &p2
写出以下表达式的类型(即int、void*等):
&vp2 + 1v[0]
我回答:
void **char**- 非法
并失去了全部信用。我只是想在尝试拿回积分之前征求别人的意见。
我不太确定,但我认为,因为
v是一个指向内存地址的void指针,所以v的地址应该是一个void**。但是,如果v被取消引用,它将是char****。p2是char**,因此向其添加 1 仍会使其成为char**。v[0]不存在。
如果有人能帮我解决这种愚蠢的问题,我将不胜感激。 谢谢。
【问题讨论】:
-
v不能自行取消引用(即没有强制转换)。这使您的第一点的最后一句话错误,但您的第三个答案正确。 -
猜你的意思是“如果 v 被强制转换为可以取消引用以获取 c 的值的类型”而不是“如果 v 被取消引用”