C中的基本类型

gfp*_*ste 4 c types

如此快速,奇怪的问题:我参加了考试,问题是:

char c = 'A'
char *p =&c
char **p2 = &p
void *v = &p2
Run Code Online (Sandbox Code Playgroud)

写下面表达式的类型(即int,void*等):

  1. &v
  2. p2 + 1
  3. v[0]

我回答了:

  1. void **
  2. char**
  3. 非法

并失去了全部功劳.在我试图获得积分之前,我只想得到某人的第二意见.

  1. 我不太确定,但我认为,因为v是一个void指向内存地址的指针,地址v将是一个void**.v然而,如果被解除引用,那将是一个char****.

  2. p2是一个char**,所以加1它仍然会成为一个char**.

  3. v[0] 不存在.

如果有人可以帮我解决这种愚蠢的问题,我将非常感激.谢谢.

Oli*_*rth 5

你的答案是正确的,原因是你提出的原因(除了关于解除引用的一点v,虽然听起来你已经知道你不能取消引用了void *).