C中的基本类型

时间:2011-12-19 00:20:17

标签: c types

这么快,奇怪的问题: 我参加了考试,问题是:

char c = 'A'
char *p =&c
char **p2 = &p
void *v = &p2

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

  1. &v
  2. p2 + 1
  3. v[0]
  4. 我回答:

    1. void **
    2. char**
    3. 非法
    4. 并失去了全部功劳。在我试图获得积分之前,我只是希望得到某人的第二意见。

      1. 我不太确定,但我认为,因为v是指向内存地址的void指针,v的地址应该是void**。但是,如果取消引用v,那么它将是char****

      2. p2char**,因此向其添加1仍然会使其成为char**

      3. v[0]不存在。

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

2 个答案:

答案 0 :(得分:5)

你的答案是正确的,原因是你提出的原因(除了有关解除引用v的内容之外,虽然听起来你已经知道你不能取消引用void *)。

答案 1 :(得分:0)

p2+1是一个等待发生的段错误,而v[0] == *(v+0) == *v是无效的,因此无效。如果进行类型转换,它应该是一个char **。