c - 我不明白以下指针变量声明在 c 中的含义

标签 c variables pointers declaration

  1. char(*p)[15];
  2. char(*p)(int *a);
  3. int(*pt)(char*);
  4. int *pt(char*);

有人帮忙吗?

最佳答案

基本规则:从标识符开始,可以时右读,必须时左读。

  1. 从标识符开始*。说出来,然后是"is"。将你的“左脚”放在其左侧一个字符。
  2. 向右阅读,直到读到末尾或)。将你的“右脚”放在 ) 所在位置的右侧一个字符(如果这就是你击中的位置)。
    • 如果向右阅读时看到 [42],请说“array of 42”。
    • 如果您在向右阅读时看到 (,请说“函数获取”,然后递归说出每个参数的类型(但省略参数名称本身),然后通过“并返回”。
  3. 现在跳上你的左脚并向左阅读,直到你击中开头或 (。如果是的话,请将你的左脚放在 ( 左侧你击中了。
    • 如果向左阅读时看到 *&,请说“指向”或“引用”。
    • 您看到的任何其他内容(例如 constintMyFoo),只需说出来即可。
  4. 如果你开始了,你就完成了。否则,跳回右脚并转到 2。

* 如果没有标识符,想象一下它必须去哪里——我知道这很棘手,但只有一个合法的位置。

遵循以下规则:

  1. p 是一个指向 15 个字符数组的指针
  2. p 是一个指向函数的指针,该函数接受指向 int 的指针并返回 char
  3. pt 是一个指向函数的指针,该函数接受指向 char 的指针并返回 int
  4. pt 是一个函数,它接收指向 char 的指针并返回指向 int 的指针

关于c - 我不明白以下指针变量声明在 c 中的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4386599/

相关文章:

variables - Tcl 中的变量范围和源命令

c - 如何创建最小的 libfuzzer cmake 示例?

c - 如何使用 char** 指针进行 FFI 调用?

c - 更喜欢 fetch_and_add 还是 add_and_fetch?

list - Sass if 在每个内部

php - MYSQL 获取列

c++ - 适当使用 boost::shared_ptr?

c++ - 为什么此时无法引用智能指针auto_ptr?

c++ - sqlite3 将数据转换为短数组

将 2D 数组复制到函数外部动态分配的 2D 数组