c - 需要帮助理解c语言中的指针声明

标签 c pointers declaration

C语言中以下类型的指针声明有什么区别?

int *p(int a),
int (*p)(int a),
int *(*p)(it(*a)[]),

如果添加一些示例以进行正确解释,将会非常有用。

最佳答案

int *p(int a);

我强烈怀疑这是一个指针声明。如果写得更好,您可能能够理解它是一个函数,它接受一个int并返回一个指向int的指针。

<小时/>
int (*p)(int a);

基本函数指针。 p 指向一个接受 int 并返回 int 的函数。例如:

int foo(int x) { return x+1; }
p = &foo;
<小时/>

最后一个有点复杂,因为它无效。括号内应该有一个数字。我认为它已更正(包括拼写错误)如下。

int *(*p)(int(*a)[3]);

它是一个函数指针,该函数接收一个指向 3 个 int 数组的指针,并返回一个指向 int 的指针。例如:

int *extract_first(int (*a)[3]) {
    return (*a);
}
p = &extract_first;

关于c - 需要帮助理解c语言中的指针声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48032784/

相关文章:

java - C 客户端/JVM 服务器设置中双向、经过身份验证的加密连接的推荐集成机制?

将字符串中的所有字符转换为十六进制并放入C中的数组中

c - wcstombs 段错误

c - 如何避免涉及 ptr 到 ptr 到 ptr 的不必要的转换和无关变量

c++ - 我应该使用指向 std::string 的指针吗

javascript - 为什么在回调中声明一个 var 会取消定义参数? (吊装)

c - 如何打印在 main 中声明并作为参数传递给 main 中返回类型为 void 的函数 sum 的两个数字的和。

c++ - C++ 开发人员可以在诺基亚 N900 上使用什么从麦克风捕获实时音频?

c++ - 试图理解函数中指针的使用

c - 静态声明位于非静态声明之后,但没有静态声明的函数