c - C中的基本类型

标签 c types

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

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

写出以下表达式的类型(即 int、void* 等):

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

我回答:

  1. void **
  2. 字符**
  3. 非法

并失去了全部学分。我只是想在尝试取回积分之前征求别人的意见。

  1. 我不太确定,但我想,因为 v 是一个指向内存地址的 void 指针,所以 的地址v 本来就是一个 void**。但是,如果 v 被取消引用,它将是一个 char****

  2. p2 是一个 char**,因此向它加 1 仍然会使它成为一个 char**

  3. v[0] 不存在。

如果有人能帮我解决这种愚蠢的问题,我将不胜感激。 谢谢。

最佳答案

你的答案是正确的,因为你给出的原因(除了关于取消引用 v 的部分,尽管听起来你已经知道你不能取消引用 void *).

关于c - C中的基本类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8555954/

相关文章:

haskell - 将函数转换为无点样式会更改其类型

c - 退格进入 C char*

c++ - C中的双指针

scala - 试图找到更简单的方法来从特征中引用子类的类型

java - 为什么Java除以0.0时不抛出异常?

c++ - 对象类型错误

c++ - C 和 C++ 中 struct 的区别

C下划线原型(prototype)语法

c - 反斜杠后空格被忽略?

sql - 使用 SQL 2005 尝试将 16 位 Varchar 转换为 Bigint 错误转换